首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在java、dom、xml解析中设置新节点值时出现问题。

在java、dom、xml解析中设置新节点值时出现问题。
EN

Stack Overflow用户
提问于 2011-01-13 22:15:15
回答 2查看 36.5K关注 0票数 24

我有以下代码:

代码语言:javascript
复制
DocumentBuilder dBuilder = dbFactory_.newDocumentBuilder();
StringReader reader = new StringReader(s);
InputSource inputSource = new InputSource(reader);
Document doc_ = dBuilder.parse(inputSource);

然后,我想用下面的代码在该节点的根节点下创建一个新元素:

代码语言:javascript
复制
Node node = doc_.createElement("New_Node");
node.setNodeValue("New_Node_value");
doc_.getDocumentElement().appendChild(node);

问题是创建并附加了节点,但没有设置值。我不知道当我查看我的xml时,如果它以某种方式隐藏,我就不能看到它的值,但我不认为是这样的,因为我试图在create node调用之后获取节点值,它返回null。我是xml和dom的新手,我不知道新节点的值存储在哪里。它就像一个属性吗?

代码语言:javascript
复制
<New_Node value="New_Node_value" />

或者它把价值放在这里:

代码语言:javascript
复制
<New_Node> New_Node_value </New_Node>

任何帮助都将不胜感激,

谢谢你,乔希

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-13 22:51:25

以下代码:

代码语言:javascript
复制
Element node = doc_.createElement("New_Node");
node.setTextContent("This is the content");  //adds content
node.setAttribute("attrib", "attrib_value"); //adds an attribute

产生:

代码语言:javascript
复制
<New_Node attrib="attrib_value">This is the content</New_Node>

希望这能澄清。

票数 43
EN

Stack Overflow用户

发布于 2011-01-13 23:28:20

为便于说明,在创建节点时,请使用:

代码语言:javascript
复制
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()作为此元素的标记之间的文本。请注意,这将销毁任何现有的子元素。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4681000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档