在Python中更新现有XML文档

2024-10-02 22:23:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个很大的XML文件,其结构大致如下:

<GROUNDTRUTH>
  <thing fileName="1" attrib="2">
    <SUBSUB moreStuff="12" otherStuff="13"/>
  </thing>
  <thing fileName="2" attrib="2">
    <SUBSUB moreStuff="12" otherStuff="13"/>
  </thing>
  <thing fileName="3" attrib="2">
    <SUBSUB moreStuff="12" otherStuff="13"/>
  </thing>
</GROUNDTRUTH>

我不认为我在这个问题的最初张贴不够清楚。我有一个名为GROUNDTRUTH的xml文档,里面有几千个“东西”。我想通过文件名搜索文档中的所有内容,然后更改属性。所以如果我在搜索fileName="2",我会把它的属性改为attrib=x。对于一些thing,也许我会下到sub的层次去改变moreStuff

我的计划是将需要更改的“things”的名称以及要将“attrib”的值更改为的内容存储到csv文件中。什么功能或模块将提供这种功能?或者我只是错过了一个简单/明显的方法?最后,我希望有一个工作脚本,它将获取一个带有thing标识符和要更新的值的csv文件,并获取xml文件来进行这些更改

感谢您的帮助和建议


Tags: 文件csv文档功能内容属性xmlfilename
1条回答
网友
1楼 · 发布于 2024-10-02 22:23:59

首先,您可以使用xslt样式表将原始xml文件转换为输出的xml文件,该样式表可以以任何方式、形状或形式修改xml文件,例如修改、重新构造、重新排序属性、元素等。请注意,xsl是一种声明性的专用语言,用于转换和呈现xml文档

然后,可以使用Python的lxml库来运行转换:

#!/usr/bin/python
import lxml.etree as ET

dom = ET.parse('originalfile.xml')
xslt = ET.parse('transformfile.xsl')
transform = ET.XSLT(xslt)
newdom = transform(dom)

tree_out = ET.tostring(newdom, encoding='UTF-8', pretty_print=True)

xmlfile = open('finalfile.xml','ab')
xmlfile.write(tree_out)
xmlfile.close()

顺便说一句,PHP,Java,C,VB,或者几乎任何语言,甚至你的日常浏览器都可以运行转换!要让浏览器运行它,只需在标题中添加样式表:

<?xml-stylesheet type="text/xsl" href="transformfile.xsl"?>

相关问题 更多 >