【问题标题】:How do I convert XML to HTML in python?如何在 python 中将 XML 转换为 HTML?
【发布时间】:2019-12-06 07:08:31
【问题描述】:

我无法让 xml.etree.ElementTree 打印或确认正确的 XHTML 标头。它坚持提供一个通用的 XML 标头,为所有标签添加前缀“html:”,抛出异常,或这些的组合。

我如何首先创建一个有效的 XHTML 文档?

我有大约 4 兆字节的 xml 文件,我正在尝试从它们创建一个有效的 epub。需要进行各种修改,例如,<chapter> 标签在 xhtml 中没有位置。

以下代码:

    import xml.etree.ElementTree as ET
    xhtml = ET.fromstring(                                                                          
    "<?xml version=\"1.0\" xmlns=\"http://www.w3.org/1999/xhtml\" ?>\n<head><title></title></head>\n<body>\n</body>")

抛出:

xml.etree.ElementTree.ParseError:XML 声明格式不正确:第 1 行,第 31 列

如果我改为给出“正确”的 xhtml 标头,它会坚持它是 html,给出它自己的 xml 标头,并在所有标签前加上“html:”

如果我给出“正确”的 xml 标头,则 epubcheck 会抱怨“”不是有效的命名空间(我想它不是)。

理论是,如果我可以创建(并随后写出)有效的 xhtml 文档,我可以解析我的 xml 以获得所需的 &lt;body&gt;&lt;title&gt;,并适当地修改它们(href 和 src 都需要更改,例如),把它们粘在那里,然后变成金色。

根据我的发现,一个有效的 xhtml 文档必须以 &lt;xhtml xmlns="http://www.w3.org/1999/xhtml&gt; 开头,并包含一个标题(带有必需的标题元素)和一个正文。我不确定我可以省略哪些(如果有的话)并仍然通过 epubcheck 的要求。

肯定有办法强制 ET 使用正确的标题吗?还是我需要使用不同的库,还是什么?

【问题讨论】:

    标签: python xml xhtml elementtree


    【解决方案1】:

    实现此目的的一种方法是使用 XSLT 转换。当提供 XSL 时,包括 Python 在内的大多数编程语言都支持将 XML 文档转换为另一个文档(例如 HTML)。

    可以在here找到一个很好的 XSLT 转换教程

    描述了使用 Python 实现转换(一旦准备好 XSL)here

    【讨论】:

      【解决方案2】:

      您的 XHTML 源代码存在一些问题。首先,xmlns 不是 xml 声明的正确属性;它应该放在根元素上。 XHTML 的根元素是&lt;html&gt;,而不是&lt;xhtml&gt;。因此,在这种特殊情况下,有效的 XHTML 输入将是

      <?xml version=\"1.0\"?>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title></head>\n<body>\n</body></html>
      

      也就是说,我不确定 xml.etree.ElementTree 是否接受,没有经验。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-24
        • 2011-04-12
        • 1970-01-01
        • 2012-05-15
        • 1970-01-01
        相关资源
        最近更新 更多