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

我有以下代码:

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时,如果它以某种方式隐藏,我是否只是看不到值但我不认为是这种情况,因为我试图在创建节点调用后获取节点值它返回null 。 我是xml和dom的新手,我不知道新节点的值存储在何处。 它是一个属性吗?

  

还是它在这里增值:

  New_Node_value  

任何帮助将不胜感激,

谢谢,乔希

以下代码:

 Element node = doc_.createElement("New_Node"); node.setTextContent("This is the content"); //adds content node.setAttribute("attrib", "attrib_value"); //adds an attribute 

生产:

 This is the content 

希望这澄清一下。

为了澄清,在创建节点时使用:

 Attr x = doc.createAttribute(...); Comment x = doc.createComment(...); Element x = doc.createElement(...); // as @dogbane pointed out Text x = doc.createTextNode(...); 

而不是使用通用节点来获取从每个方法返回的内容。 它将使您的代码更易于阅读/调试。

其次, getNodeValue() / setNodeValue()方法的工作方式不同,具体取决于您拥有的Node类型。 请参阅Node类的摘要以供参考。 对于Element,您不能使用这些方法,尽管可以使用Text节点。

正如@dogbane指出的那样,使用setTextContent()作为此元素标记之间的文本。 请注意,这将破坏任何现有的子元素。

  

‘value’是属性

New_Node

进入DOM,我建议你http://www.w3schools.com/htmldom/default.asp

这是其他解决方案,在我的情况下,此解决方案正在运行,因为setTextContent()函数不存在。 我正在使用Google Web Toolkit(GWT)(它是一个开发框架Java),我导入了XMLParser库,因为我可以使用DOM Parser。

import com.google.gwt.xml.client.XMLParser;

Document doc = XMLParser.createDocument();

Element node = doc.createElement(“New_Node”); node.appendChild(doc.createTextNode( “值”));

doc.appendChild(节点);

结果是:

< New_Node > value < /New_Node >