我得到了以下XML,它表示一篇新闻文章:
<content>
Some text blalalala
<h2>Small subtitle</h2>
Some more text blbla
<ul class="list">
<li>List item 1</li>
<li>List item 2</li>
</ul>
<br />
Even more freakin text
</content>我知道格式并不理想,但现在我必须接受它。
该条应如下所示:
我用Jsoup解析这个XML。我可以在<content>标记中使用doc.ownText()获取文本,但是我不知道其他内容(字幕)放在哪里,我只能得到一个大的String。
为此使用基于事件的解析器更好(我讨厌它们:(),还是有可能做一些类似doc.getTextUntilTagAppears("tagName")的事情?)
编辑:为了澄清,我知道<content>下的元素很热,我的问题是在<content>中获取文本,每次被元素打断时都会被分解。
我了解到,我可以用.textNodes()获取所有内容中的文本,效果很好,但我还是不知道文章中哪个文本节点属于哪里(一个在h2之前位于顶部,另一个位于底部)。
发布于 2013-07-11 12:27:50
我犯的错误是Elements通过了XML,其中不包括TextNodes。当我按节点进行检查时,我可以检查Node是Element还是TextNode,这样我就可以相应地对待它们。
发布于 2013-07-11 11:12:02
Jsoup有一个非常棒的基于选择器的语法。See here
如果你想要字幕
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 anotherhttps://stackoverflow.com/questions/17591311
复制相似问题