我試圖用xmerl_xpath在Erlang中查詢已解析的XML文檔,但我無法獲取位置謂詞的工作方式。我沒有返回第n個子元素,而是獲得了迄今爲止所選內容的第n個元素。在Erlang中使用xmerl_xpath定位謂詞
示例代碼,在這裏我想提取值11和21(「第一列」):
{XML,_} = xmerl_scan:string(
"<table>" ++
"<row><el>11</el><el>12</el></row>" ++
"<row><el>21</el><el>22</el></row>" ++
"</table>").
4 = length(xmerl_xpath:string("//table/row/el", XML)). % OK
1 = length(xmerl_xpath:string("(//table/row/el)[1]", XML)). % OK
1 = length(xmerl_xpath:string("//table/row/el[1]", XML)). % Why not 2?
是最後一個查詢的結果預期?在一般情況下,使用xmerl_path提取第n個孩子的正確方法是什麼?
(我真正想要做的是使用mochiweb_html解析HTML和使用mochiweb_xpath查詢,但後者基本上是圍繞xmerl_xpath的包裝。)
我會使用erlsom庫處理任何與erlang中的XML有關的事情(http://erlsom.sourceforge.net/)。其更穩定,更多的副作用免費和文件是明確的。 xmerl真的很棘手 –
謝謝,但erlsom的文檔建議使用xmerl附帶的xpath函數...(我的問題是查詢,而不是解析。) – goralmesh