• 十分钟内学会:将HTML格式化为合法的XML


    Question

    在网站中需要引入来自外部的HTML,这是很正常的事情。例如允许用户采用HTML直接发表时,或者聚合外部的Feed时,这时候外部的HTML就直接嵌入到我们的代码中。如果我们的网站是设计为符合XHTML的,那就可能因为引入外部HTML而破坏掉XHTML的合法性,甚至连合法的XML都做不到。这时候我们就需要将外部的HTML格式化为合法的XML,以方便我们的处理。

    Answer

    要将HTML转换为XML,最简单的做法就是利用SgmlReader了。你需要做的仅仅是去GotDotNet下载SgmlReader,然后复制我这段代码:使用SgmlReader将HTML转换为合法的XML,就那么简单。

    接着解释一下那段代码,它用到的SgmlReader,一个继承自XmlReader的类,并且在资源中内置了一个HTML.DTD。创建一个SgmlReader的实例,并且指定它使用的DocType是"HTML",那么它就知道这是指它内置的HTML.DTD。当然如果你不喜欢用这个DTD,你可以指定外部的其它DTD给它。接下来所做的事情,就是将它的读取放入一个XmlDocument中,然后再利用一个XmlTextWriter将XmlDocument写出来。如果你需要的结果是一个XmlDocument,那么最后一步就可以省略了。

    需要说明的是,SgmlReader所使用的HTML.DTD比我们通常用的loose.dtd还要宽松,所以它仅仅能保持在尽可能兼容输入HTML的情况下,输出合法的XML。如果你需要输出符合XHTML,就需要使用更加严格的DTD,或者对输出的合法XML再作处理。

    最后,如果你觉得本系列的文章对你有价值,可以考虑订阅Cat in dotNET,可选的方式包括通过Feed订阅(http://feeds.feedburner.com/CatChen/dotNET)和通过Email订阅(http://www.feedburner.com/fb/a/emailverifySubmit?feedId=573799)。

  • 相关阅读:
    【Redis】搭建主从复制
    【安装】Ubuntu之Docker
    【安装】Ubuntu之MySQL
    【Docker】Dockerfile构建指令
    【Docker】常用命令
    【14】Flask 请求上下文
    【13】Flask 上下文前夕
    【12】Flask 分析线程和协程
    【11】Flask 高级进阶
    【10】Flask 高级摘要
  • 原文地址:https://www.cnblogs.com/cathsfz/p/643336.html
Copyright © 2020-2023  润新知