返回没有节点存在的字符串Xpath

时间:2016-07-24 12:44:34

标签: xml xpath

我有一些看起来像这样的XML:

<contacts>
    <person>
        <name>Bob</name>
        <phoneNumber>1234</phoneNumber>
        <mobileNumber>5678</mobileNumber>
        <address>Address 1</address>
    </person>
    <person>
        <name>Sue</name>
        <phoneNumber>4321</phoneNumber>
        <address>Address 2</address>
    </person>
</contacts>

一些Xpath查询<person>的所有子节点:

//name | //phoneNumber | //mobileNumber | //address

结果如下:

Bob
1234
5678
Address 1
Sue
4321
Address 2

我希望Xpath查询返回一些东西(一个字符串?),以便我可以识别哪个<person>缺少一个子节点(在这种情况下,第二个人没有<mobileNumber>

我想要的输出看起来像这样:

Bob
1234
5678
Address 1
Sue
4321
null
Address 2

如果您需要更多详细信息,请与我们联系!

更新

表达式必须对Xpath 1.0有效,因为我使用的是javascript&#39; s document.evaluate

更新

我对这个表达方式有一些看法:

concat(substring(/contacts/person/mobileNumber, 1 div boolean(/contacts/person/mobileNumber)),substring('null', 1 div not(/contacts/person/mobileNumber)))

但它现在只评估第一个<person>并且不返回第二个。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

xpath查询无法创建节点; xslt用于创建/转换xml。我建议你用xpath选择所有人节点,然后使用javascript迭代人的子节点。在迭代循环中,您可以获取每个节点的文本,同时测试缺少的mobileNumber节点是否做出相应的反应。