xml - 匹配后排除节点的 Xpath

标签 xml xpath

我正在尝试解析一些数据,这些数据包含 <text /> 中选项卡的每个单元格节点。我需要忽略以星号 * 开头的节点以及它之后的 4 个节点。这可以用 xpath 完成吗,还是我需要用不同的方式来解决这个问题?

编辑:我的 XML 如下所示:

<page>
    <text attr="123" attr2="1234">ROW 1 CELL 1</text>
    <text attr="123" attr2="1234">ROW 1 CELL 2</text>
    <text attr="123" attr2="1234">ROW 1 CELL 3</text>
    <text attr="123" attr2="1234">ROW 1 CELL 4</text>
    <text attr="123" attr2="1234">ROW 1 CELL 5</text>
    <text attr="123" attr2="1234">* ROW 2 CELL 1</text>
    <text attr="123" attr2="1234">ROW 2 CELL 2</text>
    <text attr="123" attr2="1234">ROW 2 CELL 3</text>
    <text attr="123" attr2="1234">ROW 2 CELL 4</text>
    <text attr="123" attr2="1234">ROW 2 CELL 5</text>
    <text attr="123" attr2="1234">ROW 3 CELL 1</text>
    <text attr="123" attr2="1234">ROW 3 CELL 2</text>
    <text attr="123" attr2="1234">ROW 3 CELL 3</text>
    <text attr="123" attr2="1234">ROW 3 CELL 4</text>
    <text attr="123" attr2="1234">ROW 3 CELL 5</text>
</page>

最佳答案

下面的表达式:

 /*/text[not(starts-with(., '*')) and 
         not(preceding::*[position()<5][starts-with(., '*')])]

根据您的输入选择以下内容:

<root>
  <text attr="123" attr2="1234">ROW 1 CELL 1</text>
  <text attr="123" attr2="1234">ROW 1 CELL 2</text>
  <text attr="123" attr2="1234">ROW 1 CELL 3</text>
  <text attr="123" attr2="1234">ROW 1 CELL 4</text>
  <text attr="123" attr2="1234">ROW 1 CELL 5</text>
  <text attr="123" attr2="1234">ROW 3 CELL 1</text>
  <text attr="123" attr2="1234">ROW 3 CELL 2</text>
  <text attr="123" attr2="1234">ROW 3 CELL 3</text>
  <text attr="123" attr2="1234">ROW 3 CELL 4</text>
  <text attr="123" attr2="1234">ROW 3 CELL 5</text>
</root>

所有 ROW 2 都被跳过。

下面的表达式是等价的(根据德摩根定律):

/*/text[not(starts-with(., '*') or 
            preceding::*[position()<5][starts-with(., '*')])]

关于xml - 匹配后排除节点的 Xpath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6698613/

相关文章:

Python SOAP 文档处理

php - XML - 创建元素 - 换行

xml - 使用XPath查询而不是XML解析有什么好处?

java xpath解析

xml - 从 XML 中提取范式

javascript - 是什么原因导致 "The entity name must immediately follow the ' &' in the entity"错误?

php - 使用 XPATH 节点从产品中获取数据并将其插入表中

java - Java中的 Selenium : Not able to locate element on Amazon

c# - XML 字符串到 DataGridView

xpath - 使用 Capybara 和 Xpath 悬停和单击按钮时遇到问题