使用Becker的XPath方法不仅仅是第一个元素?

时间:2013-04-29 00:08:55

标签: xml xpath

我试图在Google应用电子表格中使用importXML解析XML文件。

我的问题是我的XML文档设置如下:

staffList
    staff
        name
        email
    staff
        name
    staff
        name
        email

我尝试选择所有电子邮件元素(我尝试了//员工/电子邮件,但如果节点不存在则不会插入null),如果节点为电子邮件不存在(如上例所示)。

我尝试了下面的XPath查询,但它只是选择第一个电子邮件元素,并写入1行,而不是写入n行,其中n是' staff'节点

= ImportXML(" http://www.engr.udel.edu/mf/test_staff.xml&#34 ;;" concat(/ staffList / staff / email,substring(' not-found',1 div not( / staffList /人员/电子邮件[节点()])))&#34)

有人有什么想法吗?提前谢谢!

1 个答案:

答案 0 :(得分:3)

使用

//staff/email | //staff[not(email)]

这会选择所有现有的email元素,其父元素为staff元素... plus 任何staff元素都没有{{1孩子。

不完全是“返回null”(因为在XPath中没有“null”这样的东西),但是您的代码只需要检查email元素而不是“null”。< / p>