【问题标题】:Getting cleaned HTML in text from HtmlCleaner从 HtmlCleaner 获取已清理的 HTML 文本
【发布时间】:2011-11-03 23:30:49
【问题描述】:

我想查看我们从 HTMLCleaner 获得的清理后的 HTML。 我看到在 TagNode 上有一个名为 serialize 的方法,但是不知道如何使用它。 有人有它的示例代码吗?

谢谢 奈恩

【问题讨论】:

    标签: html-parsing htmlcleaner


    【解决方案1】:
    XmlSerializer xmlSerializer = new PrettyXmlSerializer(cleanerProperties);
    
    String html = xmlSerializer.getAsString(rootTagNode);
    

    上面的方法有问题,会修剪html标签中的内容,例如,

    这是第 1 段。

     will become 
    

    这是第 1 段。

    它是getSingleLineOfChildren 函数进行修剪操作。因此,如果我们从网站获取数据并希望保持像 tuckunder 这样的格式。

    PS:如果html标签有子标签,父标签内容不会被修剪,

    例如<p> this is paragraph1. <a>www.xxxxx.com</a> </p> 将在“这是第 1 段”之前保留空格

    【讨论】:

      【解决方案2】:

      使用org.htmlcleaner.XmlSerializer的子类,例如:

      // get the element you want to serialize
      HtmlCleaner cleaner     = new HtmlCleaner();
      TagNode     rootTagNode = cleaner.clean(url);
      
      // set up properties for the serializer (optional, see online docs)
      CleanerProperties cleanerProperties = cleaner.getProperties();
      cleanerProperties.setOmitXmlDeclaration(true);
      
      // use the getAsString method on an XmlSerializer class
      XmlSerializer xmlSerializer = new PrettyXmlSerializer(cleanerProperties);
      String        html          = xmlSerializer.getAsString(rootTagNode);
      

      【讨论】:

      • 其实这个答案应该是被接受的答案。此方法无需手动注入根节点即可提供完整的 HTML。
      【解决方案3】:

      示例代码如下:

      HtmlCleaner htmlCleaner = new HtmlCleaner();
      
      TagNode root = htmlCleaner.clean(url);
      
      HtmlCleaner.getInnerHtml(root);
      
      String html = "<" + root.getName() + ">" + htmlCleaner.getInnerHtml(root) + "</" + root.getName() + ">";
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-01
        • 2012-07-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多