gpt4 book ai didi

java - 如何使用 DOM 删除 XML 文档的根节点

转载 作者:数据小太阳 更新时间:2023-10-29 02:27:57 28 4
gpt4 key购买 nike

我想使用 DOM api 从以下 XML 文档中删除包装器

<hs:PageWrapper>
<div id="botton1"/>
<div id="botton2"/>
</hs:PageWrapper>

所以我只会将这些作为最终输出:

<div id="botton1"/>
<div id="botton2"/>

我如何在 Java 中执行此操作?

最佳答案

您想要执行的操作不会生成格式正确的 XML,因为在文档根目录中将有 2 个元素。但是,下面是执行您想要的操作的代码。它获取包装器元素的子节点,为每个节点创建一个新文档,将节点导入文档并将文档写入字符串。

    public String peel(String xmlString) {
StringWriter writer = new StringWriter();
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new InputSource(new StringReader(
xmlString)));
NodeList nodes = document.getDocumentElement().getChildNodes();
for (int i = 0; i < nodes.getLength(); i++) {
Node n = nodes.item(i);
Document d = builder.newDocument();
Node newNode = d.importNode(n, true);
d.insertBefore(newNode, null);
writeOutDOM(d, writer);
}
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (TransformerFactoryConfigurationError e) {
e.printStackTrace();
} catch (TransformerException e) {
e.printStackTrace();
}
return writer.toString();
}

protected void writeOutDOM(Document doc, Writer writer)
throws TransformerFactoryConfigurationError, TransformerException {
Result result = new StreamResult(writer);
DOMSource domSource = new DOMSource(doc);
Transformer transformer = TransformerFactory.newInstance()
.newTransformer();
transformer.setOutputProperty("omit-xml-declaration", "yes");
transformer.transform(domSource, result);
}

关于java - 如何使用 DOM 删除 XML 文档的根节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4198967/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com