所以我有这种XML
文件:
<?xml version="1.0" encoding="UTF-8"?>
<element>
<name search = "select ARG: 123">
<version id = "1.1.1">
<value>bla</value>
<method>blabla</method>
</version>
</name>
<name search = "select ARG: 456">
<version id = "1.1.1">
<value>bla</value>
<method>blabla</method>
</version>
<version id = "1.1.1">
<value>bla</value>
<method>blabla</method>
</version>
<version id = "1.1.1">
<value>bla</value>
<method>blabla</method>
</version>
</name>
<name search = "text ARG: 789">
<version id = "1.1.1">
<value>bla</value>
<method>blabla</method>
</version>
</name>
<name search = "foo ARG: 444">
<version id = "1.1.1">
<value>bla</value>
<method>blabla</method>
</version>
</name>
<name search = "test ARG: Cancel">
<version id = "1.1.1">
<value>bla</value>
<method>blabla</method>
</version>
</name>
</element>
所以我想做的是每个名称node
,其搜索值以select ARG:
开头,我想复制,而不是select ARG:
,我希望它成为{{1} }
另一个没有达到此条件的selected ARG:
(以nodes
开头)应该保持不变,没有重复。
例如,对于示例文件,我想要新的文件,其外观应如下所示:
select ARG:
目前这是我尝试过的:
<?xml version="1.0" encoding="UTF-8"?>
<element>
<name search = "select ARG: 123">
<version id = "1.1.1">
<value>bla</value>
<method>blabla</method>
</version>
</name>
<name search = "selected ARG: 123">
<version id = "1.1.1">
<value>bla</value>
<method>blabla</method>
</version>
</name>
<name search = "select ARG: 456">
<version id = "1.1.1">
<value>bla</value>
<method>blabla</method>
</version>
<version id = "1.1.1">
<value>bla</value>
<method>blabla</method>
</version>
<version id = "1.1.1">
<value>bla</value>
<method>blabla</method>
</version>
</name>
<name search = "selected ARG: 456">
<version id = "1.1.1">
<value>bla</value>
<method>blabla</method>
</version>
<version id = "1.1.1">
<value>bla</value>
<method>blabla</method>
</version>
<version id = "1.1.1">
<value>bla</value>
<method>blabla</method>
</version>
</name>
<name search = "text ARG: 789">
<version id = "1.1.1">
<value>bla</value>
<method>blabla</method>
</version>
</name>
<name search = "foo ARG: 444">
<version id = "1.1.1">
<value>bla</value>
<method>blabla</method>
</version>
</name>
<name search = "test ARG: Cancel">
<version id = "1.1.1">
<value>bla</value>
<method>blabla</method>
</version>
</name>
</element>
我的代码中的这个问题是,它重复了所有from xml.dom import minidom
xamlfile = r'C:\1.xml'
newxamlfile = r'C:\new.xml'
xmldoc = minidom.parse(xamlfile)
tags = xmldoc.getElementsByTagName("name")
for item in tags:
str = item.attributes["search_name"].value
if 'select ARG:' in str:
item.attributes["search_name"].value = item.attributes["search_name"].value.replace('select ARG:',
'click ARG:')
with open(xamlfile, "a+") as f:
xmldoc.writexml(f)
,而不仅重复了符合我条件的那些。