我有三个XML文件(示例如下)。我已经用它们各自的audioId
属性值命名了这些文件。因此,有问题的文件将被称为93.xml
和2137.xml
:
93.xml文件:
<word BloomsTaxonomy="1,2,3" DictationGroupid="i-e combination List 7" Stage="0" Use="P,L" audioId="93" />
2173.xml文件:
^{pr2}$在主数据集.xml公司名称:
<word id="2137" title="over" level="1" grouping="Sight Words" YRule="0" MagicE="0" SoftC="0" doublevowel="0" longvowel="0" displayorder="101" silentletters="0"/>
文件mainDataSet.xml
包含~3000个条目。为了回答这个问题,我只提供了一个条目。在
我的问题是,如果mainDataSet.xml
中的title
属性与mainDataSet.xml
中的mainDataSet.xml
中的title
属性追加到2173.xml
中的word
标记,如果mainDataSet.xml
中的id
与文件名匹配(或者即使mainDataSet.xml
中的id
与文件名匹配)。例如,在我提供的示例中,输出应该是:
<word BloomsTaxonomy="1,2,3" DictationGroupid="i-e combination List 7" Stage="0" Use="P,L" audioId="2137" title="over" />
要从mainDataSet.xml
解析XML,我当前正在执行以下操作:
e = xml.etree.ElementTree.parse('mainDataSet.xml').getroot()
for atype in e.findall('word'):
print(atype.get('title'))
要添加属性,请使用^{} 字典。下面是一个示例代码,它循环遍历}),更新
mainDataSet.xml
内的word
元素,检索id
属性值,解析适当的XML文件(93.xml
和{word
元素并将树转储回文件:我使用的示例
^{pr2}$mainDataSet.xml
:以下是我运行脚本后得到的结果:
93.xml
:2173.xml
:对于OP或将来的读者,请考虑一个xslt1.0解决方案,Python可以使用} 函数,该函数可以访问外部xml文件中的节点,以满足ids之类的比较需求。在
lxml
模块运行该解决方案。作为信息,XSLT是一种特殊用途的语言(其脚本是格式良好的xml文件),旨在操作xml文件。该脚本可移植到其他通用语言(Java、PHP、C)、XSLT处理器(Saxon、Xalan),甚至命令行解释器(Bash、PowerShell)。具体来说,对于这个问题,XSLT维护了^{输入(添加根标记)
在主数据集.xml在
2137.xml文件
^{pr2}$93.xml文件
XSLTScript(外部另存为.xsl;read-in.py;假设所有XML文件都在同一目录中)
^{4}$Python脚本
输出(使用发布的数据)
2173.xml文件
93.xml文件
相关问题 更多 >
编程相关推荐