Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
55 views
in Technique[技术] by (71.8m points)

java - How to print entire Xml after an xPath query?

I use xPath in order to parse an Xml file.

The problem is that, after a query, let's say one that will return all nodes and values, I don't want to go through all of it, just to print it in console as a string, but like this: <tag_name>value</tag_name>

For example:

<department>
    <department_name>hr</department_name>
    <department_manager>test</department_manager>
    <empl_nr>4</empl_nr>
    <projects>
        <project>armaghedon</project>
        <project>tupe</project>
    </projects>
    <employees>
        <employee>
            <name>test</name>
            <gender>masculin</gender>
            <seniority>2</seniority>
            <children>2</children>
            <languages>
                <language>engleza</language>
                <language>spaniola</language>
            </languages>
            <projects>
                <project>japanos</project>
                <project>mercur</project>
                <project>luxurious</project>
            </projects>
        </employee>

        <employee>
            <name>test</name>
            <gender>feminin</gender>
            <seniority>7</seiority>
            <children>1</children>
            <languages>
                <language>english</language>
                <language>spanish</language>
            </languages>
            <projects>
                <project>armaghedon</project>
                <project>tupe</project>
            </projects>
        </employee>
    </department>

After a query like this //department/employees I want to print the result without having to do system.out.print for "<>". Is it possible?

question from:https://stackoverflow.com/questions/65869972/how-to-print-entire-xml-after-an-xpath-query

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Here is how to run that XPath expression and print the result as XML:

// Apply XPath to XML file
XPath xPath = XPathFactory.newInstance().newXPath();
NodeList nodes = (NodeList) xPath.evaluate(
        "//department/employees",
        new InputSource("test.xml"),
        XPathConstants.NODESET);

// Print results as XML
Transformer transformer = TransformerFactory.newInstance().newTransformer();
for (int i = 0; i < nodes.getLength(); i++) {
    transformer.transform(
            new DOMSource(nodes.item(i)),
            new StreamResult(System.out));
}

Output

<?xml version="1.0" encoding="UTF-8"?><employees>
        <employee>
            <name>test</name>
            <gender>masculin</gender>
            <seniority>2</seniority>
            <children>2</children>
            <languages>
                <language>engleza</language>
                <language>spaniola</language>
            </languages>
            <projects>
                <project>japanos</project>
                <project>mercur</project>
                <project>luxurious</project>
            </projects>
        </employee>
        <employee>
            <name>test</name>
            <gender>feminin</gender>
            <seniority>7</seniority>
            <children>1</children>
            <languages>
                <language>english</language>
                <language>spanish</language>
            </languages>
            <projects>
                <project>armaghedon</project>
                <project>tupe</project>
            </projects>
        </employee>
    </employees>

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...