【问题标题】:How to get nodes where his child node has some value如何获取他的子节点具有某些价值的节点
【发布时间】:2017-06-14 07:34:21
【问题描述】:

我有以下 xml 结构:

<?xml version="1.0" encoding="UTF-8" ?>
<rss>
    <channel>
        <item>
            <title>Some Title</title>
            </wp:comment>
                <wp:comment_approved><![CDATA[1]]></wp:comment_approved>
            </wp:comment>
            </wp:comment>
                <wp:comment_approved><![CDATA[1]]></wp:comment_approved>
            </wp:comment>
        </item>
    </channel>
</rss>

我可以通过以下方式轻松获得所有 wp:cmets:

xmlNode.SelectNodes("*[name()='wp:comment']")

但是我怎样才能获得 wp:comment_approved 值为 1 的所有 wp:cmets?

【问题讨论】:

  • 您的示例 xml 无效,在某些地方 wp:comment 之前的 / 太多了。

标签: c# xml xpath


【解决方案1】:

它更新了@Stefan Hegny 的答案,因为您不需要comment_approvedelement,而是wp:comment

xmlNode.SelectNodes("//*[name()='wp:comment'][./*[local-name() = 'comment_approved' and . = '1']")

我不确定默认的 css 定位器是否在这里工作,但在常见的 css xPath 中我会使用这个定位器(逻辑很简单 - 你搜索一些元素,其中包含带有特殊参数的元素,所以你可以调整这个定位器您的需求):

//someTag[./innerTag[text() = '1']]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-10
    • 1970-01-01
    • 1970-01-01
    • 2019-04-30
    • 1970-01-01
    相关资源
    最近更新 更多