c# - 过滤后如何将位置应用于节点

标签 c# asp.net xml xpath system.xml

<AppXmlLogWritter>
  <LogData>
    <LogID>235820130202134128634953894887814709273</LogID>
    <LogDateTime>20130102134128</LogDateTime>
    <LogType>Warning</LogType>
    <LogFlag>PACSFlag</LogFlag>
    <LogApplication>PACSLogApplication</LogApplication>
    <LogModule>PACSLogModule</LogModule>
    <LogLocation>PACSLogLocation</LogLocation>
    <LogText>PACSLogText</LogText>
  </LogData>
  <LogData>
    <LogID>2358201302021341286349538948878147093861</LogID>
    <LogDateTime>20130202134128</LogDateTime>
    <LogType>Error</LogType>
    <LogFlag>PACSFlag</LogFlag>
    <LogApplication>PACSLogApplication</LogApplication>
    <LogModule>PACSLogModule</LogModule>
    <LogLocation>PACSLogLocation</LogLocation>
    <LogText>PACSLogText</LogText>
  </LogData>
</AppXmlLogWritter>

XpathQuery

/AppXmlLogWritter/LogData[LogApplication/text()[starts-with(. , 'P')]and position()>='1' and position()<='3']

**Before Filter**
<Node 1> Position 1
<Node 2> Position 2
<Node 3> Position 3
<Node 4> Position 4
<Node 5> Position 5
<Node 6> Position 6   

 **After Filter**
<Node 2> Position 2
<Node 5> Position 5
<Node 6> Position 6

在上面的节点列表中看到在过滤之前我有 6 个节点但是当我过滤时我得到了三个节点 所以我为那个 position()>='1' 和 position()<='3 写查询,但结果只得到 1 个节点 在 sql 中,过滤行号应用于所有行后存在行号条件,但在 xml 中我该如何实现。我没有使用 LINQ to XML

最佳答案

使用括号:

(/AppXmlLogWritter/LogData[LogApplication[starts-with(. , 'P')]])[position()<=3]

如果您将位置测试放在 LogData 谓词中,那么它仅适用于该位置步骤,并将匹配限制为第一、第二个 LogData 元素或其各自父元素的第三个 LogData 子元素。使用括号构建初始节点集(所有 LogData 元素的 LogApplication 以 P 开头),然后从该集合中选择前三个节点 按文档顺序。

关于c# - 过滤后如何将位置应用于节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14723431/

相关文章:

c# - 使用 SyndicationFeed 读取 SyndicationItem 中的非标准元素

c# - 列表 <> OrderBy IComparer?

c# - 如何用c#写状态机?

asp.net - 在 GridView 中交错行/列颜色

ASP.NET MVC 发布失败 - ASPCONFIG allowDefinition ='MachineToApplication'

java - fragment_display_message : My first Android app error

c# - 将 Eval 的值从 int 转换为 string

c# - 清理 .net 中的用户 HTML

Android 自定义组件在运行时运行良好,但在设计时不起作用

python - LXML:获取标题/顶级注释