【问题标题】:Finding nodes that have no text with XPath and Python 3.4使用 XPath 和 Python 3.4 查找没有文本的节点
【发布时间】:2015-02-09 22:15:53
【问题描述】:

我有这样的 XML 文件:

<?xml version='1.0' encoding='utf-8'?>
<file_name fileNamee="test1">
  <xmlID idName="1">
    <expr mode="inline" xml:id="1">
      <App>
        <Tok font="medium" meaning="less-than-or-equals" name="lea" role="RELOP">≤</Tok>
        <Tok font="medium italic" role="UNKNOWN">d</Tok>
        <App>
          <Tok font="medium" meaning="minus" role="ADDOP">-</Tok>
          <App>
            <Tok meaning="times" role="MULOP"> </Tok>
            <Tok font="medium italic" name="phi" possibleFunction="yes" role="UNKNOWN">ϕ</Tok>
            <Tok close=")" font="medium italic" open="(" role="UNKNOWN">k</Tok>
          </App>
          <Tok font="medium" meaning="2" role="NUMBER">2</Tok>
        </App>
      </App>
    </expr>
  </xmlID>

使用 XPath,我想找到所有有文本的 Tok 节点以及没有文本的节点。

我试过了:

tree = etree.parse(xmlFile) 
textTok = tree.xpath('//Tok[text()]')

它工作并返回所有有文本的 Tok 节点。

但是如何使用 xpath 表达式获取所有没有文本的 Tok 节点?

谢谢

【问题讨论】:

  • 对Python不太熟悉;您确定这个iter() 方法将XPath 表达式作为参数吗?无论如何,您应该为您的问题添加一个完整的、可验证的 Python 脚本。
  • 是的,感谢您的回复,它解决了部分问题,所以我编辑了问题

标签: python-3.x xpath


【解决方案1】:

但是如何使用 xpath 表达式获取所有没有文本的 Tok 节点?

你会得到Tok不包含文本的元素

noTextTok = tree.xpath('//Tok[not(text())]')

请注意,您显示的输入示例不是格式良好的 XML。 xml:id 的值不能以数字开头:

<expr mode="inline" xml:id="1">

此外,示例中没有没有文本的 Tok 元素节点。

【讨论】:

  • 感谢您的帮助^_^
猜你喜欢
  • 1970-01-01
  • 2016-09-19
  • 2019-04-11
  • 1970-01-01
  • 2016-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多