我试图用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