Raj*_*Raj 3 python xml elementtree
我用谷歌搜索我的裤子无济于事.我想要做的非常简单:我想使用ElementTree访问字符串中包含的以下XML中的UniqueID值.
from xml.etree.ElementTree import fromstring
xml_string = """<ListObjectsResponse xmlns='http://www.example.com/dir/'>
<Item>
<UniqueID>abcdefghijklmnopqrstuvwxyz0123456789</UniqueID>
</Item>
</ListObjectsResponse>"""
NS = "http://www.example.com/dir/"
tree = fromstring(xml_string)
Run Code Online (Sandbox Code Playgroud)
我知道我应该使用该fromstring方法来解析XML字符串,但我似乎无法确定如何访问UniqueID.我不能确定如何使用find,findall或findtext方法相对于命名空间.
任何帮助都完全赞赏.
以下内容应该让你前进:
>>> tree.findall('*/*')
[<Element '{http://www.example.com/dir/}UniqueID' at 0x10899e450>]
Run Code Online (Sandbox Code Playgroud)
这将列出树的根下面两层的所有元素(在您的情况下为UniqueID元素).或者,您可以在此级别找到第一个元素tree.find().然后,您可以直接获取UniqueID元素的文本内容:
>>> unique_id_elmt = tree.find('*/*') # First (and only) element two levels below the root
>>> unique_id_elmt
<Element '{http://www.example.com/dir/}UniqueID' at 0x105ec9450>
>>> unique_id_elmt.text # Text contained in UniqueID
'abcdefghijklmnopqrstuvwxyz0123456789'
Run Code Online (Sandbox Code Playgroud)
或者,您可以通过指定其完整路径直接找到一些精确元素:
>>> tree.find('{{{0}}}Item/{{{0}}}UniqueID'.format(NS)) # Tags are prefixed with NS
<Element '{http://www.example.com/dir/}UniqueID' at 0x10899ead0>
Run Code Online (Sandbox Code Playgroud)
正如Tomalak所说,Fredrik Lundh的网站可能包含有用的信息; 你想检查如何处理前缀:实际上可能有一种更简单的方法来处理它们,而不是通过NS在上面的方法中明确路径.