Java - 提取子元素

标签 java xml xml-parsing

我是 Java 新手,需要解析下面的 XML 文件

<foo>
    <foo1>
        <tag1>1</tag1>
        <tag2>2</tag2>
    </foo1>

    <foo2>
        <element1>aaa</element1>
        <element1>bbb</element2>
    </foo2>

</foo>

我需要

<foo1>
    <tag1>1</tag1>
    <tag2>2</tag2>
</foo1>

<foo2>
    <element1>aaa</element1>
    <element1>bbb</element2>
</foo2>

作为输出。我能够获得节点的值但不是所需的输出。请帮帮我。谢谢。

最佳答案

好的,我想我明白了。这是带有文档的代码:

import java.io.*;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;
import org.w3c.dom.*;

    // parse input XML file into Document
    Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse("C://Temp/xx.xml");

    // build a formatted XML String 
    Transformer transformer = TransformerFactory.newInstance().newTransformer();
    transformer.setOutputProperty(OutputKeys.INDENT, "yes");
    StreamResult result = new StreamResult(new StringWriter());
    transformer.transform(new DOMSource(doc), result);
    String xmlString = result.getWriter().toString();

    // Split the formatted-XML-String according to new-line
    String lines[] = xmlString.split("\\r?\\n");
    // rebuild the String, skipping undesired lines
    xmlString = "" ;
    String newLine = String.format("%n");
    for (int i = 2 ; i < lines.length-1 ; i++) {
        xmlString += lines[i] + newLine;
    }
    System.out.println(xmlString);

关于Java - 提取子元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32603501/

相关文章:

android - 为什么默认有 content_main.xml 和 activity_main.xml 而不是只有 activity_main.xml?

android - 如何在 KSOAP2 中将 transport.dump 大小从 256 字节增加到 512 或更多字节?

c++/Parsing : error: expected primary-expression before '->' token . 如何解决这个错误..?

java spring 4 @Transactional嵌套事务问题

Java 等待多个线程,这可能会创建新线程

java - 如何根据 DateFormat.SHORT 和语言环境显示 Date 对象的时间?

xml - 如何根据选择字段值隐藏 TreeView 中的某些列?

java - 对 android 编程,当我构建项目时,我的布局 xml 文件不会更新

c# - 使用冒号时的 XML 语法(标签中的 :),

java - 如果我在 Android 中使用单独的线程更新 UI 会不会很糟糕?