解析XML文件(Java)中特定标记的内容
我有一个如下所示的XML文件,我需要使用Java生成一个.txt文件,其中包含标签中的纯文本,每一个文件一行 我读到我可以使用SAX来访问不同的标签,但是在这种情况下,在下面的示例中,在标签内部可能有随机标记,这是无效的 最好的方法是什么?也许是正则表达式解析XML文件(Java)中特定标记的内容,java,xml,xml-parsing,sax,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 se
<?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>
您可以使用
joox
库解析xml
数据。使用其find()
方法,您可以获取所有
元素,然后使用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>
编辑。对不起,我没有读随机标签部分。我会把整个文档看作一个字符串,并尝试先提取“随机”标签标识符。在SAX中,你只需等待你的开始标签,打开一个标志,然后收集你看到的所有字符,直到你看到结束标签。只需忽略内部标记的开始和结束事件。@JPMoresmau因此,在您的解决方案中,我仍然需要使用regex来丢弃标记(上面的示例),如果存在的话。对吗?将整个XML视为字符串并应用ReXEX会不会更容易,因为慢鳟鱼建议?好吧,不,SAX事件会告诉你“我启动源标签”,这就是你开始收集文本的提示。然后,您将得到一个SAX事件,它告诉您“我正在启动一个g标记”,这不会改变任何事情。然后,当您得到一些您收集的文本时,直到您看到事件“close tag source”,您停止收集文本。
<?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