使用Jsoup解析XML
我得到以下代表新闻文章的XML:
Some text blalalala Small subtitle
Some more text blbla - List item 1
- List item 2
Even more freakin text
我知道格式不理想,但现在我必须接受它。
文章应该如下:
- 一些文字blalalala
- 小副标题
- 列出项目
- 甚至更奇怪的文字
我用Jsoup解析这个XML。 我可以使用doc.ownText()
获取标签内的文本,但后来我不知道其他东西(副标题)放在哪里,我只得到一个大
String
。
为此使用基于事件的解析器会更好(我讨厌它们:()还是有可能做像doc.getTextUntilTagAppears("tagName")
这样的事情?
编辑:为了澄清,我知道在下获取元素很热,我的问题是在
获取文本,每次被元素中断时都会被分解。
我了解到我可以使用.textNodes()
获取内容中的所有文本,效果很好,但是我再次知道我的文章中哪个文本节点属于哪一个(一个位于h2之前的顶部,另一个位于底部) )。
Jsoup有一个出色的基于选择器的语法。 看这里
如果你想要副标题
Document doc = Jsoup.parse("path-to-your-xml"); // get the document node
你知道副标题是在h2
元素中
Element subtitle = doc.select("h2").first(); // first h2 element that appears
如果您想要列表:
Elements listItems = doc.select("ul.list > li"); for(Element item: listItems) System.out.println(item.text()); // print list's items one after another
我犯的错误是通过Elements
的XML,不包括TextNodes
。 当我逐个节点地浏览它时,我可以检查Node
是Element
还是TextNode
,这样我就可以相应地对待它们。