Java 如何从xml文档中删除根元素?

Java 如何从xml文档中删除根元素?,java,xml,Java,Xml,是否有可能删除xml文件的根元素? 我如何在Java中做到这一点? 我的xml文件如下所示: <root> <body> .... </body> </root> 我已经尝试过用Sax解析它,我实现了它,但是我发现Sax不允许我读到的xml文件写代码,这真的很难。 你知道如何从根标记中获取内容并将其写入以body为父项的新文档吗?如果只需要去除和标记,则不需要使用SAX等解析xml文件。只需将其解析为字符串并用空字符串替换标记即可 一个非常基本的

是否有可能删除xml文件的根元素? 我如何在Java中做到这一点? 我的xml文件如下所示:

<root>
<body>
....
</body>
</root>
我已经尝试过用Sax解析它,我实现了它,但是我发现Sax不允许我读到的xml文件写代码,这真的很难。 你知道如何从根标记中获取内容并将其写入以body为父项的新文档吗?

如果只需要去除和标记,则不需要使用SAX等解析xml文件。只需将其解析为字符串并用空字符串替换标记即可

一个非常基本的例子可以是:

  String str = "<root><body></body></root>";

  String str2 = str.replace("<root>", "").replace("</root>", "");
  System.out.println(str2);

解决问题的一种方法是使用GitHub提供的Scilca XML Progression包解析文档。您可以获取子元素的结构,然后保存它

import org.scilca.sxp.*;

XMLConnection xc = new XMLConnection("@filepath");
List<Node> allBodies = xc.searchMatches("body"); // as body is second tag it will be first in list
Node neededNode = allBodies.get(0);

//Writing Portion

Document data = new Document(neededNode);
XMLWriter xw = data.getWriter();
xw.saveXML("@filepath2");

当我在一句话中看到带有正则表达式的XML或HTML时,我总是指的是答案。@Andriabramov从技术上讲,这段代码没有使用正则表达式,但它仍然使用盲字符串替换,这对于XML和HTML来说是一个非常糟糕的主意,因为同样的原因正则表达式也是一个非常糟糕的主意。感谢您指出我的答案是错误的,但是,由于没有使用正则表达式,请详细说明为什么将and标记分条是错误的,因为根据我的理解,OP并没有被要求对xml解析做任何花哨的工作。在我的回答中,我强调这是一个非常基本的代码示例,可能完成了OP想要的工作。无需再进行否决表决,只需发布正确答案。@elefasGR这不安全,因为它可能是xml中传递的数据的一部分,所以最好使用dom4j将根元素替换为体元素,这是解决此问题的简单、安全和快速的方法SAX非常低级。您应该改用DOM。从阅读开始,并按照DocumentBuilder和Document的链接进行操作