我正在寫一個HTML解析器,它使用TagSoup將格式良好的結構傳遞給XMLSlurper。使用XmlSlurper:如何選擇子元素,同時迭代GPathResult
這裏的通用代碼:
def htmlText = """
<html>
<body>
<div id="divId" class="divclass">
<h2>Heading 2</h2>
<ol>
<li><h3><a class="box" href="#href1">href1 link text</a> <span>extra stuff</span></h3><address>Here is the address<span>Telephone number: <strong>telephone</strong></span></address></li>
<li><h3><a class="box" href="#href2">href2 link text</a> <span>extra stuff</span></h3><address>Here is another address<span>Another telephone: <strong>0845 1111111</strong></span></address></li>
</ol>
</div>
</body>
</html>
"""
def html = new XmlSlurper(new org.ccil.cowan.tagsoup.Parser()).parseText(htmlText);
html.'**'.grep { [email protected] == 'divclass' }.ol.li.each { linkItem ->
def link = [email protected]
def address = linkItem.address.text()
println "$link: $address\n"
}
我希望每個讓我依次選擇每個「禮」這樣我就可以獲取相應的href和詳細地址。相反,我得到這樣的輸出:
#href1#href2: Here is the addressTelephone number: telephoneHere is another addressAnother telephone: 0845 1111111
我檢查網絡上的各種例子,這些無論是處理XML,或者是一個班輪的例子,如「檢索該文件的所有鏈接」。似乎it.h3.a. @ href表達式正在收集文本中的所有hrefs,即使我將它傳遞給父'li'節點的引用。
你可以讓我知道:
- 爲什麼我越來越顯示
- 我怎樣才能檢索HREF /地址對每一個「禮」項目
由於輸出。
優秀的答案! – 2009-11-09 12:23:54