2010-11-30 43 views
12

我可以給予下列任一XML的:當使用xPath時,是否可以忽略c#中的命名空間?

<?xml version="1.0" encoding="UTF-8"?> 
<dc:video xmlns:dc="http://purl.org/dc/elements/1.1/"> 
    <dc:title> 
    A vid with Pete 
    </dc:title> 
    <dc:description> 
    Petes vid 
    </dc:description> 
    <dc:contributor> 
    Pete 
    </dc:contributor> 
    <dc:subject> 
    Cat 2 
    </dc:subject> 
</dc:video> 

或者:

<?xml version="1.0" encoding="UTF-8"?> 
<video> 
    <title> 
    A vid with Pete 
    <title> 
    <description> 
    Petes vid 
    <description> 
    <contributor> 
    Pete 
    <contributor> 
    <subject> 
    Cat 2 
    <subject> 
</video> 

我試着去訪問一個元素:

string title = xmlDocFromOneLan.SelectSingleNode(@"/video/title").InnerXml; 

但隨着XML文檔1它不工作由於命名空間。

有沒有辦法在C#中使用xpath忽略名稱空間?我只想選擇我真的不關心名稱空間的節點。 (命名空間可以是DC DN或DCN等)。

「/視頻」

會讀:

<video></video> 
or 
<dc:video></video> 
or 
<dcn:video></video> 

回答

37

在XPath 1.0所有你能做的就是/*[local-name() = 'video']/*[local-name() = 'title']。使用XPath 2.0,您可以使用通配符/*:video/*:title

+0

謝謝馬丁,你知道我可以在哪裏得到相關文件嗎? – Exitos 2010-11-30 12:27:11