0

我正在使用 apache xerces DOMParser 和 org.w3c.dom.Document 来解析 xml 文档。在尝试查找元素并设置一些文本内容时,没有抛出错误,但 setNodeValue(String) 方法没有为节点设置任何内容。该节点是一个文本节点。当我调试时,我看到像 nextSibling 或 firstChild 这样的属性是#text 或 \n。如何删除这些空格和 #text ?为什么 setNodeValue() 方法不起作用?

我还有一个问题:如何 getElementBytagName 具有名称空间的文档元素,例如 "tns:result" ?

在下面的 xml 中:

<document xmlns:tns="....">
<header>
 <tns:username/>
</header>
</document>

document.getElementsByTagName("tns:username").items(0).setNodeValue("hello");

但这样做之后,结果 xml 仍然是一样的。

4

1 回答 1

0

当节点类型为ELEMENT_NODE(在您的情况下)时,调用setNodeValue(...)无效(请参阅文档Node#setNodeValue(String ...)。您必须改为创建一个子文本节点。

至于您看到的文本节点,它们在文档中。如果您删除它们,您会将所有标签放在一行上。在处理 XML 时,您必须准备好忽略无关紧要的空格。解析器无法为您执行此操作,因为它不知道哪个空格对无关紧要。

于 2013-01-16T07:11:35.513 回答