这是我的xml文件:
<Attributes>
<Attribute>
<name>action</name>
</Attribute>
<Attribute>
<name>country</name>
</Attribute>
<Attribute>
<name>city</name>
</Attribute>
<Attribute>
<name>location</name>
</Attribute>
<Attribute>
<name>ad_title</name>
</Attribute>
<Attribute>
<name>posting_date</name>
</Attribute>
<Attribute>
<name>bedrooms</name>
</Attribute>
<Attribute>
<name>bathrooms</name>
</Attribute>
<Attribute>
<name>type</name>
</Attribute>
<Attribute>
<name>size</name>
</Attribute>
<Attribute>
<name>property_referene</name>
</Attribute>
<Attribute>
<name>price</name>
</Attribute>
<Attribute>
<name>price_sqft</name>
</Attribute>
<Attribute>
<name>building</name>
</Attribute>
<Attribute>
<name>amenities</name>
</Attribute>
<Attribute>
<name>description</name>
</Attribute>
<Attribute>
<name>trade_name</name>
</Attribute>
<Attribute>
<name>ded_licence_number</name>
</Attribute>
<Attribute>
<name>rera_registration_number</name>
</Attribute>
<Attribute>
<name>phone</name>
</Attribute>
<Attribute>
<name>ad_images</name>
</Attribute>
<Attribute>
<name>payment_type</name>
</Attribute>
<Attribute>
<name>furnished</name>
</Attribute>
</Attributes>
我有这个班级
from lxml import etree
from pprint import pprint
class defaultAttributeParser():
def __init__(self, defaultAttributeFile):
self.doc=etree.parse(defaultAttributeFile)
def getDefaultAttributes(self):
attributesDict = list()
attributes = self.doc.findall('Attributes/Attribute')
print(attributes)
for attribute in attributes:
print("asfasfd")
attributesDict.append(attribute.find('name').text)
return attributesDict
a = defaultAttributeParser('Apartments.xml')
pprint(len(a.getDefaultAttributes()))
我一直认为getDefaultAttributes的数量是零,即使如你所见,属性太多,我做错了什么?
答案 0 :(得分:3)
使用您的示例文档:
>>> import lxml.etree
>>> et = lxml.etree.parse('test.xml')
>>> et.xpath('Attributes')
[]
>>> et.xpath('/Attributes')
[<Element Attributes at 0x10a55c7a0>]
......而且,答案是:你需要锚定你的疑问。
>>> et.xpath('/Attributes/Attribute')
...返回所有Attribute
元素。