2

xml.etree.ElementTree の element.findall() を使用して、1 つの属性に複数の値を持つ要素を見つけることはできますか?

これを使用して、class="day" を含むすべての div 要素を見つけることができます。

from xml.etree.ElementTree import ElementTree

calendar = ElementTree()
calendar.parse("calendar-week.xml")

calendar.findall('.//div[@class="day"]')

または、class="first day" を持つすべての div 要素を検索するには、次のようにします。

calendar.findall('.//div[@class="first day"]')

しかし、クラスに「日」を含むすべての div 要素を見つける方法はありますか? これを行う方法に関するドキュメントが見つかりません。ここで正規表現を使用する方法はありますか?

<body>
   <div class="calendar-week">
      <div class="first day" id="su">Sunday</div>
      <div class="day" id="mo">Monday</div>
      <div class="day" id="tu">Tuesday</div>
      <div class="day" id="we">Wednesday</div>
      <div class="day" id="th">Thursday</div>
      <div class="day" id="fr">Friday</div>
      <div class="last day" id="sa">Saturday</div>
      <div class="clear-float"></div>
   </div><!-- /calendar-week -->
</body>    
4

2 に答える 2

1

このxpathは、通常これを行う方法です。

'//div[contains(concat(" ", @class, " "), " day ")]'
于 2012-07-05T19:33:30.040 に答える
1

このコードは、@stranac からの回答で提供された xpath 用語に基づいて機能しました

from lxml import etree as ET

calendar = ET.ElementTree()
calendar.parse("calendar-week.xml")

elem_list = calendar.xpath('//div[contains(concat(" ", @class, " "), " day ")]')
于 2012-07-06T04:17:17.890 に答える