我有一个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
答案 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