我正试图找到一种方法来使用Python解析几个.xml文件中的数据,这些文件包含我的团队正在开发的系统的部件号和描述。以下是这些文件的外观:
注:出于保密原因,实际数据已被清理
<DOCUMENT>
<config>
<lruname>NFS</lruname>
<swpn>123-A-456-7890</swpn>
<swname>00 NFS ABC DEFGHI XYZ JKL</swname>
<swver>Appid: abc-defghi-xyz PN: 123-A-456-7890</swver>
</config>
</DOCUMENT>
我想把这些文件中的和数据类型转换成.csv格式。我最初的想法是尝试使用内置的xml.etree库将这些数据类型解析到字典中,但由于某些原因,它找不到元素:
import xml.etree.ElementTree as ET
data = '''
<DOCUMENT>
<config>
<lruname>NFS</lruname>
<swpn>123-A-456-7890</swpn>
<swname>00 NFS ABC DEFGHI XYZ JKL</swname>
<swver>Appid: abc-defghi-xyz PN: 123-A-456-7890</swver>
</config>
</DOCUMENT>
'''
tree = ET.fromstring(data)
PartNo = tree.find('swpn')
Desc = tree.find('swname')
print(PartNo)
出于某种原因,上面的代码返回“None”,但我希望它返回我正在调用的xml元素
ElementTree
和etree
的查找直接子级的功能搜索器您仍然可以通过指定整个分支来使用它:
如果您总是想查找
swpn
,但忽略结构(例如,您不知道它是否将是config
的子级),您可能会发现在etree
(而不是在ElementTree
)中使用xpath
功能更容易:在本例中,
//
基本上意味着您正在tree
中查找元素,不管它们在哪里如果xml文件很小,并且您不关心性能,那么可以使用
minidom
,这比lxml
更方便。在这种情况下,您的代码可以是这样的:我认为您缺少XML层次结构中的
config
级别,您可以这样做:或者,如果您不想知道结构,您可以遍历所有元素,并使用条件来查找您所关心的
tree.iter
元素相关问题 更多 >
编程相关推荐