带有节点冒号的XML属性的XPath查询

时间:2013-08-05 03:39:40

标签: python xpath

所有 我在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. EXPR =     “// packageItem / itemMeta / itemClass / * [local-name()='rtr:msgType'和     命名空间URI()= 'http://www.reuters.com/ns/2003/08/content']“;

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

  3. 方法 getValnamespaces

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

    但我可以None

    我的方法有什么问题?

    由于

1 个答案:

答案 0 :(得分:0)

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

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