java dom xml解析器从xml获取html标签(<p color =“something”> some text </p>)

时间:2011-08-23 09:16:21

标签: java xml parsing

我有一个带有html标签的xml文件,如:

<?xml version="1.0" encoding="utf-8" ?>
 <blog>
 <blogid>49</blogid>
 <title>[FIXED] Job requests page broken</title> 
 <fulltext>
 <img title="page broken" src="images/west/blog/site-broken.jpg" alt="page broken" />
 <p><span style="background-color: #ccffcc;">Update 28/05/2011</span>: Job requests page seems to be working OK now. If you find any issues please use the contact page to notify us. Thank you for your patience!</p>
<p>Â </p>
 <p>Well, what can I say? Why does it always have to be that way? You are trying to create something new and something else gets broken on the way...</p>
 </fulltext>

现在我想要标签之间的整个html部分。 我现在得到的是空白,因为我认为dom也在解析html标签。

我试过xpath,但它不适用于android。

3 个答案:

答案 0 :(得分:0)

我认为你不能将这个格式不正确的XML原样带入DOM中。 (编辑:还是格式良好?)

你需要a)要么逃避字符 - 使XML格式良好和可解析(但可能不是你想要的DOM,我想你想在不同的系统中显示HTML)或b)解析它使用流处理器或c)使用字符串操作修复它(添加&lt; [[CDATA ..]]&gt;)然后将其解析为DOM。

HTH

答案 1 :(得分:0)

HTML是XML的子语言(无需深入了解与XHTML相关的详细信息)。因此,DOM解析器没有理由不将这些内部标记视为XML标记。

也许您正在寻找的是一种展平<fulltext>内部内容的方法?

答案 2 :(得分:0)

为此目的使用像Jsoup这样的库。

public static void main(String args[]){

    String html = "<?xml version="1.0"?><foo>" + 
                  "<bar>Some&nbsp;text &mdash; invalid!</bar></foo>";
    Document doc = Jsoup.parse(html, "", Parser.xmlParser());

    for (Element e : doc.select("bar")) {
        System.out.println(e);
    }   


}