【问题标题】:Preserve XML Tags - Python DOM Implementation保留 XML 标签 - Python DOM 实现
【发布时间】:2011-04-27 13:50:35
【问题描述】:

我刚刚浏览完python DOM API,似乎找不到我要找的东西。

我基本上想在遍历 DOM 树时保留 XML 标签。这个想法是打印标签名称和相应的属性,我稍后想将它们转换为 xml 文件。

<book name="bookname" source="/home/phiri/Book/book.xml"
      xmlns:xi="http://www.w3.org/2001/XInclude">
  <chapter>
    <page>page1</page>
    <page>page2</page>
  </chapter>
  <chapter>
    <page>page1</page>
    <page>page2</page>
    <page>Page3</page>
  </chapter>
</book>

以上面的 XML 内容为例,我想要的是 book.xml 文件的结果。

<book name="bookname" source="/home/phiri/Book/book.xml"
      xmlns:xi="http://www.w3.org/2001/XInclude">
  <chapter></chapter>
  <chapter></chapter>
</book>

是否有一个替代的 xml 包可以用来保存使用 python 提取内容时得到的结果?

【问题讨论】:

  • 问题不是很清楚..听起来您想使用 XSLT(样式表转换)。如果您明确说明您正在尝试做什么,您将更有可能获得帮助。
  • @SteveMc:感谢您的回复。我基本上是在尝试将我的 XML 文档分解成更小的部分,每个部分只有两个级别。 Book.xml 将有书籍节点和章节节点 Chapter.xml 将有章节节点和页面节点 page.xml 将只有页码文本我希望这有助于澄清事情。
  • 想法是最终使用 XInclude 重新组装完整的文档。

标签: python xml dom


【解决方案1】:

从输入中获取您发布的输出的一种简单方法是覆盖XSLT identity transform。看起来您想要消除所有文本节点和所有具有两个以上祖先的元素,因此您只需为它们添加空模板:

<xsl:template match="text()"/>

<xsl:template match="*[count(ancestor::*) &gt; 2]"/>

通常,在 Python 中使用 XSLT 的最佳方式是使用 libxml2 模块。除非您需要一个纯 Python 解决方案,在这种情况下,您将无法使用 XSLT,因为还没有人构建过纯 Python XSLT 处理器。

【讨论】:

  • 谢谢;我想那时我将不得不坚持使用 XSLT。
猜你喜欢
  • 1970-01-01
  • 2016-10-09
  • 1970-01-01
  • 1970-01-01
  • 2010-12-16
  • 1970-01-01
  • 1970-01-01
  • 2017-01-12
  • 1970-01-01
相关资源
最近更新 更多