Java 删除父节点并保留其子节点 我有这个XML,希望删除链接标记并保留它的所有子项

Java 删除父节点并保留其子节点 我有这个XML,希望删除链接标记并保留它的所有子项,java,xml,dom,Java,Xml,Dom,输入xml: <P> <LINK TYPE="ERRATUM" DOI=""> Der Kommentar zum Artikel Schaefer et al. in Heft 4/91 (S. 238) wurde nicht von PD Dr. <EM EMTYPE="ITALIC">M. Stöckle</EM> (Urologische Klinik, Mainz), sondern von PD

输入xml:

  <P>
  <LINK TYPE="ERRATUM" DOI="">
    Der Kommentar zum Artikel Schaefer et al. in Heft 4/91 (S. 238) wurde
    nicht von PD Dr.
    <EM EMTYPE="ITALIC">M. Stöckle</EM>
    (Urologische Klinik, Mainz), sondern von PD Dr.
    <EM EMTYPE="ITALIC">O. Schofer</EM>
    (Kinderklinik der Universität, Mainz) verfasst.
  </LINK>
  </P>
  <P>

    Der Kommentar zum Artikel Schaefer et al. in Heft 4/91 (S. 238) wurde
    nicht von PD Dr.
    <EM EMTYPE="ITALIC">M. Stöckle</EM>
    (Urologische Klinik, Mainz), sondern von PD Dr.
    <EM EMTYPE="ITALIC">O. Schofer</EM>
    (Kinderklinik der Universität, Mainz) verfasst.

  </P>

德尔科门塔尔·祖姆·阿蒂克尔·谢弗等人于1991年4月4日(S.238)在沃尔德 尼希特冯PD博士。 斯特克尔先生 (美因茨克林尼克泌尿外科),索德恩·冯·PD博士。 肖弗 (缅因州大学幼儿园)维法斯特。

输出xml:

  <P>
  <LINK TYPE="ERRATUM" DOI="">
    Der Kommentar zum Artikel Schaefer et al. in Heft 4/91 (S. 238) wurde
    nicht von PD Dr.
    <EM EMTYPE="ITALIC">M. Stöckle</EM>
    (Urologische Klinik, Mainz), sondern von PD Dr.
    <EM EMTYPE="ITALIC">O. Schofer</EM>
    (Kinderklinik der Universität, Mainz) verfasst.
  </LINK>
  </P>
  <P>

    Der Kommentar zum Artikel Schaefer et al. in Heft 4/91 (S. 238) wurde
    nicht von PD Dr.
    <EM EMTYPE="ITALIC">M. Stöckle</EM>
    (Urologische Klinik, Mainz), sondern von PD Dr.
    <EM EMTYPE="ITALIC">O. Schofer</EM>
    (Kinderklinik der Universität, Mainz) verfasst.

  </P>

德尔科门塔尔·祖姆·阿蒂克尔·谢弗等人于1991年4月4日(S.238)在沃尔德 尼希特冯PD博士。 斯特克尔先生 (美因茨克林尼克泌尿外科),索德恩·冯·PD博士。 肖弗 (缅因州大学幼儿园)维法斯特。

我尝试了这个代码,但没有成功

private void visitRecursively(Node node, Document document, String tagToRemove) {

    // get all child nodes
    NodeList list = node.getChildNodes();
    for (int i = 0; i < list.getLength(); i++) {

        // get child node

        Node childNode = list.item(i);

        if(childNode != null){
            if(childNode.getNodeType() == Node.ELEMENT_NODE){
                if(childNode.getNodeName().equals(tagToRemove)){

                    NodeList nodeList = childNode.getChildNodes();
                    Node parentNode = childNode.getParentNode();
                    System.out.println("parent= "+parentNode.getNodeName());
                    for(int j = 0 ; j < nodeList.getLength() ;  ++j ){
                            parentNode.appendChild(nodeList.item(j));
                    }
                }
            }
        }
        visitRecursively(childNode, document, tagToRemove);
    }
}
private void访问(节点节点、文档文档、字符串标记删除){
//获取所有子节点
NodeList list=node.getChildNodes();
对于(int i=0;i

谢谢

对于基于行的格式,我只需将文本解析为列表并删除行,包括“
向我们展示一些代码。您尝试了什么?目前为了进行此操作,我将节点重命名为
tagtoremove
,然后进行了字符串替换
”“
。但是我需要一个更好的使用DOM的方法。今天有人问了几乎完全相同的问题。我将尝试找到它。下面是如何使用JaxB实现它