[英]lxml.etree not returning proper xpath value
我有這樣的xml字符串
<description> asdasdasd <a> Item1 </a><a> Price </a></description>
我正在使用lxml.etree,如下所示:
import lxml.etree as le
doc=le.fromstring("<description>asdasdasd <a>Item1</a> <a>Price</a> </description>")
desc = doc.xpath("//description")[0]
print desc.text
但desc.text
是只返回asdasdasd。 我期待asdasdasd Item1 Price
。 我的代碼有什么問題嗎?
這是一種實現方法:
print desc.text + ' '.join(child.text for child in desc)
印刷品:
asdasdasd Item1 Price
另一種選擇是使用descendant-or-self
xpath技巧:
desc = doc.xpath("//description/descendant-or-self::*")
print ' '.join(child.text for child in desc)
印刷品:
asdasdasd Item1 Price
不,您必須將其視為一棵樹(這就是lxml.etree
的原因)
根據定義,一個xml節點可以包含一個文本,一些屬性和其他節點(請參閱參考資料 )
|--> description
|--> a
|--> a
也許這有助於了解:
import lxml.etree as le
doc=le.fromstring("<description>asdasdasd <a>Item1</a> <a>Price</a> </description>")
desc = doc.xpath("//description")[0]
print desc.text
for child in desc:
print child.text
輸出:
asdasdasd
Item1
Price
XML背后的想法是嘗試對實例建模(或多或少)。 你的情況,你有一個description
有兩個目的a
里面物體(可能是一個列表,例如)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.