def str = """
<foo xmlns:weird="http://localhost/">
<bar>sudo </bar>
<weird:bar>make me a sandwich!</weird:bar>
</foo>
"""
def xml = new XmlSlurper().parseText(str)
println xml.bar
這段代碼的輸出是
# sudo make me a sandwich!
好像解析器合併的<bar>
和<weird:bar>
內容。
是否需要此行爲?如果是,我該如何避免這種情況,並只選擇<bar>
或<weird:bar>
?
謝謝,這解釋了幾件事情:)我解析不同的xml,我不知道他們正在使用哪些命名空間;除了解析命名空間的根元素並聲明它們之外,是否有可能實現'println xml。':bar''的輸出? – codeporn 2011-12-29 17:04:50
我認爲默認情況下XmlSlurper是名稱空間感知的,因爲'new XmlSlurper() - > new XmlSlurper(false,true)':http://stackoverflow.com/questions/33418826/are-xmlparser-and-xmlslurper-namespace-意識到默認 – jalopaba 2015-11-03 09:59:19
呃。出於某種原因,這不適合我。我正在解析頭文件中聲明名稱空間的RSS文檔。我可以訪問rss.channel.link,但rss.channel.'atom:link'.text()和rss.channel.'atom:link'。@ href.text()全部返回空白值。 :( – Umopepisdn 2016-05-15 20:55:32