我正在尝试在Python中找到xml-interpret函数(如simplexml_load_string),但没有成功:/
假设我在字符串中有xml
my_xml_string = """
<root>
<content>
<one>A value</one>
<two>Here goes for ...</two>
</content>
</root>"""
要在php中读取值,我会正常地做这样的事情
// read into object
$xml = simplexml_load_string(my_xml_string);
// print some values
echo $xml->root->content->one
echo $xml->root->content->two
python / django中有没有等效的对象?
由于
答案 0 :(得分:4)
最近的可能是ElementTree,它是python标准库的一部分(或扩展版本lxml)
import xml.etree
element = xml.etree.ElementTree.XML(my_xml_string)
设置Element类的元素,可以将其视为XML元素列表
e.g。
# for your example
print(element[0][0].tag)
print(element[0][0].text)
print(element[0][3].text)
如果要使用名称,也可以通过XPath进行搜索。
lxml还有一个objectify模型,允许访问元素“如果你正在处理普通的Python对象层次结构”。哪个更准确地匹配php用法
答案 1 :(得分:2)
lxml.objectify完全符合您的要求
In [1]: from lxml import objectify
In [2]: x = objectify.fromstring("""<response><version>1.2</version><amount>1.01</amount><currency>USD</currency></response>""")
In [3]: x.version
Out[3]: 1.2
In [4]: x.amount
Out[4]: 1.01
In [5]: x.currency
Out[5]: 'USD'
答案 2 :(得分:1)
Python standard library包括几个xml解析模块。可能最简单的是ElementTree。
from xml.etree import cElementTree as ET
xml = ET.fromstring(my_xml_string)
print xml.find('.//content/one').text
print xml.find('.//content/two').text
答案 3 :(得分:1)
ElementTree很常见,可能是Python中包含的最好的库(从2.5版开始)。
但是,我个人更喜欢lxml的力量和灵活性。 “lxml.objectify”方法对于将大型XML DOM解析为pythonic对象特别有用。
答案 4 :(得分:0)
来自xml.dom.minidom import *
my_xml_string = """
<root>
<content>
<one>A value</one>
<two>Here goes for ...</two>
</content>
</root>"""
xml = parseString(xml_string)
result = xml.getElementsByTagName('one')[0].firstChild.data
这就是诀窍,现在!