【问题标题】:XPATH: Check if a xml node contains specific characters or stringsXPATH:检查 xml 节点是否包含特定字符或字符串
【发布时间】:2011-08-03 21:09:09
【问题描述】:

想象一下这个 XML 文件(对不起这个病态的例子!!)

<DOC>
<Test>
    <Name>1 vs 100 Pre pre History</Name>
    <Type>Dinasors</Type>
</Test>

<Test>
    <Name> 1 vs 100 Post moderns</Name>
    <Type>Aliens</Type>
</Test>
</Doc>

这个想法是通过检查 Name 节点是否包含特定字符或字符串来返回 Type 值。例如,我想要一个 XPath 查询,例如:

/Doc//Test[contains "Pre" and "History" and 1]/Type

即检查 Test 是否包含“Pre”和“History”以及数字 1,xpath 查询将是什么? Alo 我喜欢这个查询不区分大小写。

谢谢。

【问题讨论】:

  • 我们说的是 Xpath 1.0 还是 2.0?

标签: c# xml string xpath contains


【解决方案1】:

我认为这应该可行(尚未测试):

/Doc//Test[contains(Name,'Pre') and contains(Name,'History') and contains(Name,1)]/Type

但是,这是区分大小写的。如果您希望它不区分大小写,那么您可能需要查看this questionthis question:您必须使用translate 将您的Name 转换为小写(或大写)然后匹配。

【讨论】:

  • +1 正确,但请注意不需要 // 运算符。也可以减少到/Doc/Test[Name[contains(.,'Pre')][contains(.,'History'][contains(.,'1')]]/Type
【解决方案2】:

它在以下情况下起作用:

/Doc//Test[contains(Name,'Pre')][contains(Name,'History')][contains(Name,1)]/Type;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-08
    • 1970-01-01
    • 2014-07-12
    • 2010-12-20
    • 2018-10-03
    • 2021-12-05
    • 2019-08-15
    • 1970-01-01
    相关资源
    最近更新 更多