我正在嘗試查詢(xún)adium生成的xml文件。xmlwf說(shuō)它格式正確。通過(guò)使用xmllint的調(diào)試選項(xiàng),我得到以下信息:$ xmllint --debug doc.xmlDOCUMENTversion=1.0encoding=UTF-8URL=doc.xmlstandalone=true ELEMENT chat default namespace href=http://purl.org/net/ulf/ns/0.4-02 ATTRIBUTE account TEXT content=foo@bar.com ATTRIBUTE service TEXT compact content=MSN TEXT compact content= ELEMENT event ATTRIBUTE type一切似乎都可以解析。但是,當(dāng)我嘗試查詢(xún)最簡(jiǎn)單的內(nèi)容時(shí),卻什么也沒(méi)得到:$ xmllint --xpath '/chat' doc.xml XPath set is empty發(fā)生了什么?使用xpath運(yùn)行該完全相同的查詢(xún)將返回正確的結(jié)果(但是結(jié)果之間沒(méi)有換行符)。我是在做錯(cuò)什么還是xmllint不能正常工作?這是xml的較短的匿名版本,顯示了相同的行為:<?xml version="1.0" encoding="UTF-8" ?><chat xmlns="http://purl.org/net/ulf/ns/0.4-02" account="foo@bar.com" service="MSN"><event type="windowOpened" sender="foo@bar.com" time="2011-11-22T00:34:43-03:00"></event><message sender="foo@bar.com" time="2011-11-22T00:34:43-03:00" alias="foo"><div><span style="color: #000000; font-family: Helvetica; font-size: 12pt;">hi</span></div></message></chat>
2 回答

慕森王
TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超3個(gè)贊
我知道這個(gè)問(wèn)題現(xiàn)在已經(jīng)很老了,但萬(wàn)一它可以幫助某人...
遇到了同樣的問(wèn)題,這是由于XML具有名稱(chēng)空間(有時(shí)在XML中的不同位置重復(fù)了)。發(fā)現(xiàn)最簡(jiǎn)單的方法是在使用xmllint之前刪除名稱(chēng)空間:
sed -e 's/xmlns=".*"//g' file.xml | xmllint --xpath "..." -
在我的情況下,XML是UTF-16,因此我必須先轉(zhuǎn)換為UTF-8(用于sed):
iconv -f utf16 -t utf8 file.xml | sed -e 's/encoding="UTF-16"?>/encoding="UTF-8"?>/' | sed -e 's/xmlns=".*"//g' | xmllint --xpath "..." -
添加回答
舉報(bào)
0/150
提交
取消