1

我在 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' and namespace-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

我的方法有什么问题?

谢谢

4

1 回答 1

0

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

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