如何从XML(Python)中获取特定信息
我需要从这个XML脚本中获取用户名。我阅读了Python中的元素树库,并尝试了他们对我的XML文件所做的操作,但没有成功。我所需要的只是一个获取用户名的示例,这将非常有帮助,并帮助我理解其余内容。首先是XML文件,然后是代码如何从XML(Python)中获取特定信息,python,xml,Python,Xml,我需要从这个XML脚本中获取用户名。我阅读了Python中的元素树库,并尝试了他们对我的XML文件所做的操作,但没有成功。我所需要的只是一个获取用户名的示例,这将非常有帮助,并帮助我理解其余内容。首先是XML文件,然后是代码 <?xml version="1.0" encoding="UTF-8" ?> - <definitions name="GetEmailCert" targetNamespace="urn:GetEmailCert" xmlns="http://sc
<?xml version="1.0" encoding="UTF-8" ?>
- <definitions name="GetEmailCert" targetNamespace="urn:GetEmailCert"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="urn:GetEmailCert" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <message name="GetEmailCertRequest">
<part name="username" type="xsd:string" />
</message>
- <message name="GetEmailCertResponse">
<part name="fullname" type="xsd:string" />
<part name="email" type="xsd:string" />
<part name="certificate" type="xsd:string" />
</message>
除了@Rob发现的
-
(连字符)字符之外ᵩ (这让我相信您从用户友好的显示工具复制/粘贴了XML blob),我发现了另外两个:
节点未正确关闭定义
- XML有多个根节点(在本例中为3个)。根据: 定义:只有一个元素,称为根元素或文档元素
- Python的
无法解析它xml.etree.ElementTree
- 2个Web浏览器(Chrome和IE)无法渲染它
root
):
XML中的
-
字符使其无效。它们是否存在于实际文件中?
from xml.etree.ElementTree import ElementTree
tree = ElementTree()
tree.parse("test.xml")
root = tree.getroot()
root.tag
root.attrib
for child in root:
print child.tag, child.attrib
#This one works
for username in root.iter('username'):
print username
#This one I do not know how to correctly implement
<?xml version="1.0" encoding="UTF-8" ?>
<root>
<definitions name="GetEmailCert" targetNamespace="urn:GetEmailCert"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="urn:GetEmailCert" xmlns:xsd="http://www.w3.org/2001/XMLSchema"/>
<message name="GetEmailCertRequest">
<part name="username" type="xsd:string"/>
</message>
<message name="GetEmailCertResponse">
<part name="fullname" type="xsd:string"/>
<part name="email" type="xsd:string"/>
<part name="certificate" type="xsd:string"/>
</message>
</root>
import xml.etree.ElementTree as ET
def main():
tree = ET.parse("test.xml")
root_node = tree.getroot()
message_nodes = root_node.iter("message")
for message_node in message_nodes:
part_nodes = message_node.iter("part")
for part_node in part_nodes:
if part_node.attrib.get("name", "") == "username":
print(ET.tostring(part_node))
if __name__ == "__main__":
main()