2013-08-05 205 views
1

全部 我在Python語言中使用了XPath庫。但我不能在我的XML文件中使用冒號。XML屬性的XPath查詢,包含節點的冒號

的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時/ * [本地名稱()= 'RTR:MSGTYPE'和 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

什麼毛病我的方法?

感謝

+0

你的代碼是形成不良的,其真的很難看看你已經嘗試過了。你究竟想在這裏做什麼? – 2013-08-05 03:42:52

+0

我改變了它。對不起 – user2378427

回答

0

您需要使用@匹配屬性,同時試圖匹配local-name()你不應該指定命名空間:

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

非常感謝。有用。 – user2378427