我有以下代码:
DocumentBuilder dBuilder = dbFactory_.newDocumentBuilder();
StringReader reader = new StringReader(s);
InputSource inputSource = new InputSource(reader);
Document doc_ = dBuilder.parse(inputSource);
然后,我想用下面的代码在该节点的根节点下创建一个新元素:
Node node = doc_.createElement("New_Node");
node.setNodeValue("New_Node_value");
doc_.getDocumentElement().appendChild(node);
问题是创建并附加了节点,但没有设置值。我不知道当我查看我的xml时,如果它以某种方式隐藏,我就不能看到它的值,但我不认为是这样的,因为我试图在create node调用之后获取节点值,它返回null
。我是xml和dom的新手,我不知道新节点的值存储在哪里。它就像一个属性吗?
<New_Node value="New_Node_value" />
或者它把价值放在这里:
<New_Node> New_Node_value </New_Node>
任何帮助都将不胜感激,
谢谢你,乔希
发布于 2011-01-13 22:51:25
以下代码:
Element node = doc_.createElement("New_Node");
node.setTextContent("This is the content"); //adds content
node.setAttribute("attrib", "attrib_value"); //adds an attribute
产生:
<New_Node attrib="attrib_value">This is the content</New_Node>
希望这能澄清。
发布于 2011-01-13 23:28:20
为便于说明,在创建节点时,请使用:
Attr x = doc.createAttribute(...);
Comment x = doc.createComment(...);
Element x = doc.createElement(...); // as @dogbane pointed out
Text x = doc.createTextNode(...);
而不是使用generic Node来获取从每个方法返回的内容。这将使您的代码更易于阅读/调试。
其次,根据节点类型的不同,getNodeValue()
/ setNodeValue()
方法的工作方式也不同。请参阅Node class摘要以供参考。对于元素,不能使用这些方法,但是对于文本节点,可以使用这些方法。
正如@dogbane指出的那样,使用setTextContent()
作为此元素的标记之间的文本。请注意,这将销毁任何现有的子元素。
https://stackoverflow.com/questions/4681000
复制相似问题