【问题标题】:lxml: Converting XML to HTML through XSLT and get HtmlElementslxml:通过 XSLT 将 XML 转换为 HTML 并获取 HtmlElements
【发布时间】:2013-06-18 20:13:24
【问题描述】:

我有以 XML 文件形式出现的数据。我还获得了一个 XSLT 来将 XML 转换为 HTML。我可以使用 lxml 来执行转换,但是,我想在转换后更改一些 HTML 标记。如何将这个新的 etree 转换为 HtmlElements,以便我可以专门使用某些方法,如 .cssselect() 等。

【问题讨论】:

  • 改xslt代码不是更容易吗?
  • 没有。我想从新创建的 标签中获取文件名,以便我可以将它们 Base64 编码到新的 html 文件中。类似的东西。
  • 您好,您能否将您用于将 xml 和 xslt 转换为 html 的代码发送给我?我在网上找不到任何东西。
  • @OozeMeister:I have also been provided an XSLT to transform the XML to HTML。你能分享一下你用来做这个的python代码吗?

标签: python html xml xslt lxml


【解决方案1】:
>>> import lxml.etree
>>> import lxml.html
>>>
>>> xmlstring = '''\
... <?xml version='1.0' encoding='ASCII'?>
... <root><a class="here">link1</a><a class="there">link2</a></root>
... '''
>>> root = lxml.etree.fromstring(xmlstring)
>>> root.cssselect('a.here')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'lxml.etree._Element' object has no attribute 'cssselect'

lxml.etree.tostring(root) -> lxml.html.fromstring(..)

>>> root = lxml.html.fromstring(lxml.etree.tostring(root))
>>> root.cssselect('a.here')
[<Element a at 0x2989308>]

获取 XML 输出:

>>> print lxml.etree.tostring(root, xml_declaration=True)
<?xml version='1.0' encoding='ASCII'?>
<root><a class="here">link1</a><a class="there">link2</a></root>
猜你喜欢
  • 1970-01-01
  • 2019-08-03
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 2014-03-08
  • 2012-09-29
  • 2012-06-02
相关资源
最近更新 更多