我现在一直在寻找几个小时的答案,但我似乎找不到如何在XML文件中查找标记并提取其价值的简单答案。例如:
<?xml version="1.0" encoding="UTF-8"?>
<record name="test111.xml" type="content">
<item name="Metadata">
<value>
<item name="label1">
<value>
<item name="dummy1">
<value />
</item>
</value>
</item>
<item name="Source">
<value>test</value>
</item>
<item name="Channel">
<value>celebrate</value>
</item>
<item name="Catref">
<value>cat150032</value>
</item>
<item name="ParentsSource" />
<item name="MobileFriendly" />
<item name="VirtualPath">
<value>/testFolder/testItem</value>
</item>
<item name="VirtualFileName">
<value>sweets/</value>
</item>
<item name="RefreshMode">
<value>soft</value>
</item>
<item name="label2">
<value>
<item name="dummy2">
<value />
</item>
</value>
</item>
</value>
</item>
</record>
在这种情况下,我试图将VirtualPath
的值设为/testFolder/testItem
,可能更多。
from __future__ import print_function
import os
folderArray = ['\test1', '\test2', '\test3', '\test4']
path = 'D:\Projects\test'
for i in range(0, len(folderArray)):
tempPath = path + folderArray[i]
for root, dirs, files in os.walk(tempPath):
for file in files:
if file.endswith(".xml"):
if (folderArray[0]):
# LOOK ONLY FOR VIRTUAL PATH
f = open(tempPath, 'r')
for line in f:
if "VirtualPath" in line:
# HERE FIND THE VALUE OF THE TAG
打开XML文件后,我不知道如何查找特定标记并查找其值。我知道我可以做一个indexof并将值输出子串,但这不是最有效的方法。
修改
玩了一下之后找到了答案。我知道这有重复但我在创建这个问题之前并不知道。 答案:
from __future__ import print_function
import os
from xml.dom import minidom
folderArray = ['\test1', '\test2', '\test3', '\test4']
path = 'D:\Projects\test'
for i in range(0, len(folderArray)):
tempPath = path + folderArray[i]
for root, dirs, files in os.walk(tempPath):
for file in files:
if file.endswith(".xml"):
xmldoc = minidom.parse(tempPath + '\\' + file)
itemlist = xmldoc.getElementsByTagName('item')
for s in itemlist:
if (s.attributes['name'].value == 'VirtualPath'):
print(s.childNodes[0].firstChild.nodeValue)