System.Xml.XmlNode.InnerXml的Java等价物
是否有与.NET的System.Xml.XmlNode.InnerXml相当的java版本 我需要替换XML文档中的一些单词 我不能使用Java的org.w3c.dom.Node.setTextContent,因为这样会删除XML节点 谢谢 资料来源:System.Xml.XmlNode.InnerXml的Java等价物,java,.net,Java,.net,是否有与.NET的System.Xml.XmlNode.InnerXml相当的java版本 我需要替换XML文档中的一些单词 我不能使用Java的org.w3c.dom.Node.setTextContent,因为这样会删除XML节点 谢谢 资料来源: <body> <title>Home Owners Agreement</title> <p>The <b>good</b> thing about a Home Owner
<body>
<title>Home Owners Agreement</title>
<p>The <b>good</b> thing about a Home Owners Agreement is that...</p>
</body>
上面代码的问题是p的所有子节点都丢失了。您可以查看一下
类似于document.getRootElement.getChildELEMENT1.settExtReplacementText
在将文档转换为JDOM文档方面,您还有一些工作要做,但是有一些适配器使这对您来说相当容易。或者,如果XML在文件中,您可以使用JDOMBuilder类来创建要操作的DOM。
`好的,我找到了解决办法 关键是您不想替换实际节点的文本。实际上只有文本的子表示。我能够用这段代码完成我所需要的:
private static void replace(Node root){
if (root.getNodeType() == root.TEXT_NODE){
root.setTextContent(root.getTextContent().replace("Home Owners Agreement", "HMO"));
}
for (int i = 0; i < root.getChildNodes().getLength(); i++){
outputTextOfNode(root.getChildNodes().item(i));
}
}
如果我这样做了,我还会丢失ELEMENT1中的子元素吗?你能给出一个更具体的例子吗?我发现很难可视化您试图更改的XML。用一个示例更新了问题。问题是使用p.setTextContent时会丢失子节点
replaceText(string term, string replaceWith, org.w3c.dom.Node p){
p.setTextContent(p.getTextContent().replace(term, replaceWith));
}
private static void replace(Node root){
if (root.getNodeType() == root.TEXT_NODE){
root.setTextContent(root.getTextContent().replace("Home Owners Agreement", "HMO"));
}
for (int i = 0; i < root.getChildNodes().getLength(); i++){
outputTextOfNode(root.getChildNodes().item(i));
}
}