Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
System.Xml.XmlNode.InnerXml的Java等价物_Java_.net - Fatal编程技术网

System.Xml.XmlNode.InnerXml的Java等价物

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

是否有与.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 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));
    }
}