用Python解析xml中的单个文本项

2024-10-01 02:22:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直试图从xml文件中某个元素的特定子元素中提取一个特定的文本项。请参阅下面的XML。在

    <PropertySetProperty xsi:type="typens:PropertySetProperty">
        <Key>ConnectionFile</Key>
        <Value xsi:type="xs:string">THE TEXT I WANT, IN THIS CASE A FILE PATH</Value>
    </PropertySetProperty>

问题是,大约有8个不同的“propertysetproperty”元素。。。。。钥匙是唯一的部分。如何根据文本上方的键提取文本的值?一、 我怎么能在key=ConnectionFile的地方编码,在它的正下方打印值?在

到目前为止,我已经尝试了xml.etree和{},但没有成功。有人能给我指一个正确的方向来拉出特定的文本行-文件路径?在

我已经能够提取出惟一项的值,比如脚本中提到的ClientHostName值,但是我在如何正确地调用所需的文件路径方面遇到了困难,因为它嵌套在许多相似元素/子元素的中间(抱歉,我对xml术语有点粗糙)

^{pr2}$

这段代码正是我想要的-客户端计算机名。如果有任何关于拉出文件路径的建议,我们将不胜感激。在


Tags: 文件key文本路径元素valuetype请参阅
1条回答
网友
1楼 · 发布于 2024-10-01 02:22:37
xmlstr = """
<?xml version="1.0"?>
<RootElement>
  <PropertySetProperty>
    <Key>KeyNotOfInterest</Key>
    <Value>ValueNotOfInterest</Value>
  </PropertySetProperty>
  <PropertySetProperty>
    <Key>ConnectionFile</Key>
    <Value>THE TEXT I WANT, IN THIS CASE A FILE PATH</Value>
  </PropertySetProperty>
  <PropertySetProperty>
    <Key>KeyAlsoNotOfInterest</Key>
    <Value>ValueAlsoNotOfInterest</Value>
  </PropertySetProperty>
</RootElement>
"""
from lxml import etree

doc = etree.fromstring(xmlstr.strip())
#doc = etree.parse("xmlfilename.xml")

xp = "//PropertySetProperty[Key/text()='ConnectionFile']/Value/text()"
wanted = doc.xpath(xp)[0]
print wanted

或者可能将xpath与参数一起使用:

^{pr2}$

XPath转换为:
在“文本”元素中查找值为“text”的“get ConnectionFile”子元素值,且该元素的值为“get ConnectionFile”

这假设您已安装lxml

$ pip install lxml

在windows上更好地使用:

$ easy_install lxml

因为它将从下载的exe安装程序安装,不会尝试从源代码编译。在

相关问题 更多 >