1
자식 요소에 텍스트 값이없는 경우 XPath는 아무 것도 반환하지 않습니다. 이 경우 등급에는 데이터가 없으므로이를 말하고 싶습니다.이 아이는 무시하거나 무시하지 않습니다. 귀하의 의견은 높이 평가됩니다.데이터가 없으면 XPath에서 '없음'을 반환합니다.
XML :
<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
<rating></rating>
</book>
<book>
<title lang="hindi">Learning XML</title>
<price>39.95</price>
<rating></rating>
</book>
</bookstore>
파이썬 :
>>> import lxml.html as lh
>>> bk=open('book.xml','r')
>>> bkout=lh.parse(bk)
>>> bk.close()
>>> bkout.xpath('//book/*/text()')
['Harry Potter', '29.99', 'Learning XML', '39.95']
>>> bkout.xpath('//book/* and not(text())/text()')
True
원하는 출력 :
['Harry Potter', '29.99', '', 'Learning XML', '39.95', '']
or
['Harry Potter', '29.99', None, 'Learning XML', '39.95', None]
고마워요! 그것은 효과가 있었다. for 루프 대신 XPath에서 직접 찾고 있었지만 그렇지 않을 수도 있습니다. 나는 그것을하는이 방법에 충실 할 것이다. – ThinkCode
태그 또는 속성이있는 다른 태그와 함께 작동하지 않는 것 같습니다. 예를 들어, Hello ==> bk.xpath (""// book/span [@ class = "brightred"]/*)]의 x에 대한 x.text. 여러 개의 span 태그가있는 경우 작동하지 않습니다. questin을 수정하거나 새로운 질문을 열어 볼까요? 중복을 피하고 싶습니다! 고맙습니다! – ThinkCode
xpath 끝에 "/ *"을 제거해야한다고 생각합니다. 6 월 19 일 준 답을 통해