Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以使用python根据csv文件值编辑xml文件吗?_Python_Xml_Csv - Fatal编程技术网

我可以使用python根据csv文件值编辑xml文件吗?

我可以使用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

我有一个CSV文件,其中有一个带有空白的数字列表,如:

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非常适合这种任务。这非常棒,非常有魅力,非常感谢!