【问题标题】:How to keep XML tags but remove HTML tags [closed]如何保留 XML 标签但删除 HTML 标签 [关闭]
【发布时间】:2016-10-09 09:19:17
【问题描述】:

我有一个包含一些 HTML 标记的 XML 文件。我想保留 XML 标签但删除 HTML 标签。例如在下面的结构中

<xml_tag_parent>
     <xml_tag_child>
       Some text here <p> some parag here </p>
     </xml_tag_child>
</xml_tag_parent>

我想得到:

<xml_tag_parent>
     <xml_tag_child>
       Some text here some parag here 
     </xml_tag_child>
</xml_tag_parent>

我事先不知道xml标签是什么。 另请注意,HTML 标记可能是嵌套的,因此我不能只获取节点的值。例如在以下 xml 文档中:

<description id="description">
  <heading id="h-0001" level="1">CROSS REFERENCE</heading>
  <p id="p-0002" num="0001">The Paragraph </p>
  <claim attr="someAttr"> abcs </claim>
  <claim attr="2">
    <p> this is another paragraph <b>with some bold things</b> </p>
  </claim>
</description id="description">

我想得到:

<description id="description">
  CROSS REFERENCE The Paragraph
  <claim attr="someAttr"> abcs </claim>
  <claim attr="2">
    this is another paragraph with some bold things
  </claim>
</description id="description">

我可以尝试对所有 HTML 标记进行硬编码,找到它们并删除它们。例如,我可以查找 标签并将其替换为空字符串,但这听起来不正确,此外还有很多标签需要覆盖。是否有 Java 中的库或更好的方法来做到这一点?

【问题讨论】:

    标签: java html xml


    【解决方案1】:

    您可以使用 Jsoup 库,它可以帮助您报废 html 标签。完整的教程可以从jsoup获得。用于废弃 html 标记的代码是:

    public static String htmltagremove(String html) {
         return Jsoup.parse(html).text();
    }
    

    【讨论】:

    • 此代码也将删除 XML 标记。我想保留 XML 标记但删除 HTML 标记
    【解决方案2】:

    您可以使用 Jericho jar 来实现您想要的。

    它有能力只提取html标签并忽略所有其他标签,符合你想要的。

    http://jericho.htmlparser.net/docs/index.html

    【讨论】:

    • 我试过这样使用 --> Source htmlSource = new Source("myhtml"); Segment htmlSeg = new Segment(htmlSource, 0, htmlSource.length());渲染器 htmlRend = new Renderer(htmlSeg);这将删除所有标签,包括声明...我错过了什么吗?
    • @Bahar 它解决了你的目的吗?
    猜你喜欢
    • 2015-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-03-16
    • 2016-01-28
    相关资源
    最近更新 更多