在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
>