是否存在.NET的System.Xml.XmlNode.InnerXml
的等价物?
我需要替换XML文档中的一些单词。
我无法使用Java的org.w3c.dom.Node.setTextContent()
,因为这会删除XML节点。
谢谢!
来源:
<body>
<title>Home Owners Agreement</title>
<p>The <b>good</b> thing about a Home Owners Agreement is that...</p>
</body>
期望的输出:
<body>
<title>Home Owners Agreement</title>
<p>The <b>good</b> thing about a HOA is that...</p>
</body>
我只希望替换<p>
标签中的文字。我尝试了以下方法:
replaceText(string term, string replaceWith, org.w3c.dom.Node p){
p.setTextContent(p.getTextContent().replace(term, replaceWith));
}
上述代码的问题是p
的所有子节点都丢失了。
答案 0 :(得分:0)
您可以查看jdom。
像document.getRootElement().getChild("ELEMENT1").setText("replacement text");
在将文档转换为JDOM文档时,您需要做一些工作,但有些适配器可以让您轻松完成。或者,如果XML位于文件中,您只需使用JDOM Builder类来创建要操作的DOM。 `
答案 1 :(得分:0)
好的,我找到了解决方案。
关键是您不想替换实际节点的文本。实际上只有文本的子代表。我能够用这段代码完成我需要的东西:
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));
}
}