我正在尝试使用xmerl_xpath在 Erlang 中查询已解析的 XML 文档,但我无法使位置谓词起作用。我没有返回第 n 个子元素,而是得到了迄今为止选择的所有内容的第 n 个元素。
示例代码,我想在其中提取值 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 的包装器。)