【问题标题】:Split XML using a Xpath Java使用 Xpath Java 拆分 XML
【发布时间】:2017-02-22 03:14:43
【问题描述】:

我有以下 XML 字符串。

<Engineers>
    <Engineer>
        <Name>JOHN</Name>
        <Position>STL</Position>
        <Team>SS</Team>
    </Engineer>
    <Engineer>
        <Name>UDAY</Name>
        <Position>TL</Position>
        <Team>SG</Team>
    </Engineer>
    <Engineer>
        <Name>INDRA</Name>
        <Position>Director</Position>
        <Team>PP</Team>
    </Engineer>
</Engineers>

当 Xpath 被指定为 Engineers/Enginner 时,我需要将此 xml 拆分为更小的 xml 字符串。

较小的xml字符串如下

<Engineers>
    <Engineer>
        <Name>INDRA</Name>
        <Position>Director</Position>
        <Team>PP</Team>
    </Engineer>
</Engineers>

<Engineers>
    <Engineer>
        <Name>JOHN</Name>
        <Position>STL</Position>
        <Team>SS</Team>
    </Engineer>
</Engineers>

如何使用 Java 文档构建器和 XpathFactory 做到这一点?

【问题讨论】:

标签: java xml xpath split


【解决方案1】:

这会对你有所帮助;

Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new File("../Xpath/src/example.xml"));
        XPath xPath = XPathFactory.newInstance().newXPath();
        XPathExpression exp = xPath.compile("//Engineer");
        NodeList nl = (NodeList)exp.evaluate(doc, XPathConstants.NODESET);
        System.out.println("Found " + nl.getLength() + " results");

        for (int i = 0; i < nl.getLength(); i++) {
            Node node = nl.item(i);
             StringWriter buf = new StringWriter();
                Transformer xform = TransformerFactory.newInstance().newTransformer();
                xform.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
                xform.transform(new DOMSource(node), new StreamResult(buf));
                System.out.println(buf.toString());
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-07
    • 2015-05-23
    • 1970-01-01
    • 1970-01-01
    • 2011-07-07
    • 2017-09-16
    • 2011-08-03
    • 2011-09-12
    相关资源
    最近更新 更多