从XML文件(Java)中的特定标记解析内容

时间:2015-06-30 14:52:09

标签: java xml xml-parsing sax

我有一个XML文件,如下所示,我需要使用Java生成一个带有标签的.txt文件,每个文件都在一行中。

我读到我可以使用SAX来访问不同的标签,但在这种情况下,在下面的示例中可能有类似的随机标签,这是无效的。

这样做的最佳方法是什么?也许是正则表达式?

<?xml version="1.0" encoding="utf-8"?>
[...]
<source>
  <g id="_0">
    <g id="_1">First valid sentence</g>
  </g>
</source>
<source>Another valid string</source>

输出results.txt应该是这样的:

First valid sentence
Another valid string

1 个答案:

答案 0 :(得分:3)

您可以使用joox库来解析xml数据。使用find()方法,您可以获取所有<source>个元素,然后使用getTextContent()提取其文本,例如:

import java.io.File;
import java.io.IOException;
import org.xml.sax.SAXException;
import static org.joox.JOOX.$;

public class Main {

    public static void main(String[] args) throws SAXException, IOException {
        $(new File(args[0]))
            .find("source")
            .forEach(elem -> System.out.println(elem.getTextContent().trim()));

    }
}

我将假设一个结构良好的xml文件,例如:

<?xml version="1.0" encoding="utf-8"?>
<root>
    <source>
        <g id="_0">
            <g id="_1">First valid sentence</g>
        </g>
    </source>
    <source>Another valid string</source>
</root>

它产生了:

First valid sentence
Another valid string