簡體   English   中英

lxml.etree沒有返回正確的xpath值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM