gpt4 book ai didi

lxml - 在 python lxml 中查找前缀标签的提示?

转载 作者:行者123 更新时间:2023-12-01 05:17:09 26 4
gpt4 key购买 nike

我正在尝试使用 lxml 的 ElementTree etree 在我的 xml 文档中查找特定标签。标签如下所示:

<text:ageInformation>
<text:statedAge>12</text:statedAge>
</text:ageInformation>

我希望使用 etree.find('text:statedAge'),但该方法不喜欢 'text' 前缀。它提到我应该在前缀映射中添加“文本”,但我不确定该怎么做。有什么建议吗?

编辑:我希望能够写入 hr4e 前缀标签。以下是文档的重要部分:

<?xml version="1.0" encoding="utf-8"?>
<greenCCD xmlns="AlschulerAssociates::GreenCDA" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:hr4e="hr4e::patientdata" xsi:schemaLocation="AlschulerAssociates::GreenCDA green_ccd.xsd">
<header>
<documentID root="18c41e51-5f4d-4d15-993e-2a932fed720a" />
<title>Health Records for Everyone Continuity of Care Document</title>
<version>
<number>1</number>
</version>
<confidentiality codeSystem="2.16.840.1.113883.5.25" code="N" />
<documentTimestamp value="201105300211+0800" />
<personalInformation>
<patientInformation>
<personID root="2.16.840.1.113883.3.881.PI13023911" />
<personAddress>
<streetAddressLine nullFlavor="NI" />
<city>Santa Cruz</city>
<state nullFlavor="NI" />
<postalCode nullFlavor="NI" />
</personAddress>
<personPhone nullFlavor="NI" />
<personInformation>
<personName>
<given>Benjamin</given>
<family>Keidan</family>
</personName>
<gender codeSystem="2.16.840.1.113883.5.1" code="M" />
<personDateOfBirth value="NI" />
<hr4e:ageInformation>
<hr4e:statedAge>9424</hr4e:statedAge>
<hr4e:estimatedAge>0912</hr4e:estimatedAge>
<hr4e:yearInSchool>1</hr4e:yearInSchool>
<hr4e:statusInSchool>attending</hr4e:statusInSchool>
</hr4e:ageInformation>
</personInformation>
<hr4e:livingSituation>
<hr4e:homeVillage>Putney</hr4e:homeVillage>
<hr4e:tribe>Oromo</hr4e:tribe>
</hr4e:livingSituation>
</patientInformation>
</personalInformation>

最佳答案

namespace 前缀必须在 XML 文档中声明(映射到 URI)。然后您可以使用 {URI}localname notation查找 text:statedAge 和其他元素。像这样的:

from lxml import etree

XML = """
<root xmlns:text="http://example.com">
<text:ageInformation>
<text:statedAge>12</text:statedAge>
</text:ageInformation>
</root>"""

root = etree.fromstring(XML)

ageinfo = root.find("{http://example.com}ageInformation")
age = ageinfo.find("{http://example.com}statedAge")
print age.text

这将打印“12”。

另一种方法:

ageinfo = root.find("text:ageInformation",
namespaces={"text": "http://example.com"})
age = ageinfo.find("text:statedAge",
namespaces={"text": "http://example.com"})
print age.text

您也可以使用XPath :

age = root.xpath("//text:statedAge",
namespaces={"text": "http://example.com"})[0]
print age.text

关于lxml - 在 python lxml 中查找前缀标签的提示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7683162/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com