我可以使用python根据csv文件值编辑xml文件吗?
我有一个CSV文件,其中有一个带有空白的数字列表,如:我可以使用python根据csv文件值编辑xml文件吗?,python,xml,csv,Python,Xml,Csv,我有一个CSV文件,其中有一个带有空白的数字列表,如: 0001 0002 0003 0005 0007 etc. 我有一个XML文件,其中包含带有标识符的节点,以及一个没有间隙的数字列表,如: <?xml version='1.0' encoding='utf-8'?> <root> <item> <unitd>0001</unitd> <unittitle>description
0001
0002
0003
0005
0007
etc.
我有一个XML文件,其中包含带有标识符的节点,以及一个没有间隙的数字列表,如:
<?xml version='1.0' encoding='utf-8'?>
<root>
<item>
<unitd>0001</unitd>
<unittitle>description of item 1</unittitle>
</item>
<item>
<unitd>0002</unitd>
<unittitle>description of item 2</unittitle>
</item>
<item>
<unitd>0003</unitd>
<unittitle>description of item 3</unittitle>
</item>
<item>
<unitd>0004</unitd>
<unittitle>description of item 4</unittitle>
</item>
<item>
<unitd>0005</unitd>
<unittitle>description of item 5</unittitle>
</item>
<item>
<unitd>0006</unitd>
<unittitle>description of item 6</unittitle>
</item>
<item>
<unitd>0007</unitd>
<unittitle>description of item 7</unittitle>
</item>
</root> <!-- added by edit -->
0001
项目1的说明
0002
项目2的说明
0003
项目3的说明
0004
项目4的说明
0005
项目5的说明
0006
项目6的说明
0007
项目7的说明
我想在XML文件的项目中添加一个额外的元素,这些项目具有可以在CSV文件中找到的标识符,如下所示:
<root>
<item>
<unitd>0001</unitd>
<unittitle>description of item 1</unittitle>
<link>link to extra info on item 1</link>
</item>
<item>
<unitd>0002</unitd>
<unittitle>description of item 2</unittitle>
<link>link to extra info on item 2</link>
</item>
<item>
<unitd>0003</unitd>
<unittitle>description of item 3</unittitle>
<link>link to extra info on item 3</link>
</item>
<item>
<unitd>0004</unitd>
<unittitle>description of item 4</unittitle>
</item>
<item>
<unitd>0005</unitd>
<unittitle>description of item 5</unittitle>
<link>link to extra info on item 5</link>
</item>
<item>
<unitd>0006</unitd>
<unittitle>description of item 6</unittitle>
</item>
<item>
<unitd>0007</unitd>
<unittitle>description of item 7</unittitle>
<link>link to extra info on item 7</link>
</item>
import lxml.etree as ET
dom = ET.parse("input.xml")
xslt = ET.parse("trans.xslt")
transform = ET.XSLT(xslt)
newdom = transform(dom)
print(ET.tostring(newdom, pretty_print=True))
0001
项目1的说明
链接到项目1的其他信息
0002
项目2的说明
链接到项目2的其他信息
0003
项目3的说明
链接到项目3的其他信息
0004
项目4的说明
0005
项目5的说明
链接到项目5的其他信息
0006
项目6的说明
0007
项目7的说明
链接到项目7的其他信息
我可以使用python实现这一点吗?如何或有更智能的方法来处理这一点?处理XML到XML转换的最智能的方法是使用专门为此目的设计的XSLT 因此,要将源XML转换为所需的目标XML,可以使用以下XSLT-1.0脚本(名为
trans.XSLT
):
将上述XSLT与XML帮助文件一起应用的输出符合要求
因此,要在Python中使用它,可以参考解释如何使用XSLT转换XML文件的 假设您的XML文件名为
input.XML
,代码可能如下所示:
<root>
<item>
<unitd>0001</unitd>
<unittitle>description of item 1</unittitle>
<link>link to extra info on item 1</link>
</item>
<item>
<unitd>0002</unitd>
<unittitle>description of item 2</unittitle>
<link>link to extra info on item 2</link>
</item>
<item>
<unitd>0003</unitd>
<unittitle>description of item 3</unittitle>
<link>link to extra info on item 3</link>
</item>
<item>
<unitd>0004</unitd>
<unittitle>description of item 4</unittitle>
</item>
<item>
<unitd>0005</unitd>
<unittitle>description of item 5</unittitle>
<link>link to extra info on item 5</link>
</item>
<item>
<unitd>0006</unitd>
<unittitle>description of item 6</unittitle>
</item>
<item>
<unitd>0007</unitd>
<unittitle>description of item 7</unittitle>
<link>link to extra info on item 7</link>
</item>
import lxml.etree as ET
dom = ET.parse("input.xml")
xslt = ET.parse("trans.xslt")
transform = ET.XSLT(xslt)
newdom = transform(dom)
print(ET.tostring(newdom, pretty_print=True))
现在你应该已经得到你想要的结果了。你能吗?也许吧,既然你问这个,“不”。还有其他人吗?当然Python非常适合这种任务。这非常棒,非常有魅力,非常感谢!