Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python lxml中获取无价值的元素_Python_Xml_Lxml_Lxml.objectify - Fatal编程技术网

在python lxml中获取无价值的元素

在python lxml中获取无价值的元素,python,xml,lxml,lxml.objectify,Python,Xml,Lxml,Lxml.objectify,我一直试图使用lxml包的“objectify”来解析我的XML,但遇到了一个问题。如果我有一个毫无价值的标签,我似乎找不到一种方法来获取它的属性 例如: import lxml.objectify xml_obj = lxml.objectify.fromstring(""" <A> <B foo="baz"/> <B foo="bar"/> </A>""") print xml_obj.getchildren() A = N

我一直试图使用lxml包的“objectify”来解析我的XML,但遇到了一个问题。如果我有一个毫无价值的标签,我似乎找不到一种方法来获取它的属性

例如:

import lxml.objectify

xml_obj = lxml.objectify.fromstring("""
<A>
    <B foo="baz"/>
    <B foo="bar"/>
</A>""")
print xml_obj.getchildren()

A = None [ObjectifiedElement]
    B = u'' [StringElement]
      * baz = 'boo'
    B = u'' [StringElement]
      * foo = 'bar'
import lxml.objectify
xml_obj=lxml.objectify.fromstring(“”)
""")
打印xml_obj.getchildren()
A=无[客观删除]
B=u''[StringElement]
*baz=‘boo’
B=u''[StringElement]
*foo='bar'
正如您所看到的,两个B标记被转换为StringElement,但正如转储对象时所看到的,仍然应该有一种方法来检索属性

import lxml.objectify as objectify
import lxml.etree as ET

content = """
<A>
    <B foo="baz"/>
    <B foo="bar"/>
</A>"""
xml_obj = objectify.fromstring(content)
print(xml_obj.getchildren())
# [u'', u'']
您还可以修改这些属性:

xml_obj.B.attrib['baz'] = 'boo'
xml_obj.B[1].attrib['foo'] = 'blah'
使用
ET.tostring
序列化
xml\u obj
显示结果:

print(ET.tostring(xml_obj, pretty_print=True))
# <A>
#   <B foo="baz" baz="boo"/>
#   <B foo="blah"/>
# </A>
print(ET.tostring(xml\u obj,pretty\u print=True))
# 
#   
#   
# 

谢谢,这让人困惑,因为当元素是普通元素时(如果b有一些值),使用属性(即“b.foo”)确实有效。
print(ET.tostring(xml_obj, pretty_print=True))
# <A>
#   <B foo="baz" baz="boo"/>
#   <B foo="blah"/>
# </A>