【问题标题】:XPath query for XML attribute with colon of the node带有节点冒号的 XML 属性的 XPath 查询
【发布时间】:2013-08-05 14:52:36
【问题描述】:

全部 我在 Python 语言中使用了 XPath 库。但我无法在我的 xml 文件中获取一些带有冒号的属性。

xml文件内容:

  xmlns:rtr="http://www.reuters.com/ns/2003/08/content"
    <packageItem conformance="power" guid="2013-07-17 15:53:21" standard="NewsML-G2" standardversion="2.14" version="1" xml:lang="en">
    <itemClass qcode="icls:composite" rtr:msgType="S"/>

这是我写的两种方法。

def getxmlVal(self, expr):
    data = xpath.findvalue(expr, self.doc)
    return data
def getValnamespaces(self, expr, namespace):
    context = xpath.XPathContext(default_namespace=namespace)
    return context.findvalue(expr, self.doc);

我也试过: 对于方法 getxmlVal

  1. 表达式= "//packageItem/itemMeta/itemClass/*[local-name()='rtr:msgType' 和 命名空间-uri()='http://www.reuters.com/ns/2003/08/content']";

  2. expr= "//itemMeta/itemClass/*[name()='rtr:msgType']";

对于方法 getValnamespaces

expr= "//itemMeta/itemClass/*[name()='rtr:msgType']"; 
namespace = "http://www.reuters.com/ns/2003/08/content";

但我可以得到None

我的方法有什么问题?

谢谢

【问题讨论】:

  • 您的代码格式不正确,很难看到您尝试过的内容。你到底想在这里做什么?
  • 我已经改过了。对不起

标签: python xpath


【解决方案1】:

你需要使用@来匹配一个属性,并且你不应该在尝试匹配local-name()时指定命名空间:

expr= "//packageItem/itemMeta/itemClass/@*[local-name()='msgType' and namespace-uri()='http://www.reuters.com/ns/2003/08/content']";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-07
    相关资源
    最近更新 更多