2012-04-13 186 views
0

我有以下XMLLINQ與命名空間前綴xml的

<Location xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> 
<Latitude>-1</Latitude> 
<Longtitude>-1</Longtitude> 
</Location> 

而且沒有命名空間(XMLNS:我......),我可以使用查詢

//xdoc is an XDocument loaded with the above xml 
var locCollection = from p in xdoc.Descendants("Location") 

命名空間下但沒有前綴「我」,我可以使用查詢

XNamespace ns = @"http://www.w3.org/2001/XMLSchema-instance" 
var locCollection = from p in xdoc.Descendants(ns + "Location") 

那麼,如何應對TE「我」字頭以下?

謝謝。

回答

0

問題是,當您提供名稱空間前綴時,您需要明確地爲該名稱空間中的XML元素加上前綴。因此,在您的示例中,如果您明確指定了i:Location中的前綴,那麼您的查詢將起作用。

<i:Location xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> 
    <Latitude>-1</Latitude> 
    <Longtitude>-1</Longtitude> 
</i:Location> 

它的工作,而沒有前綴的原因是因爲出來的前綴指定的命名空間被認爲是默認的命名空間,因此Location是默認作用域的命名空間。

+0

謝謝克里斯。這實際上起作用。但你看到的XML是我從WCF服務獲得的迴應。我使用了[DataContract(Namespace =「」)] public class Location {},它默認沒有指定前綴(i:location)。我知道這是一個完全不同的問題,但是你碰巧知道解決方案嗎? – user302581 2012-04-14 04:27:59

+0

您將需要提供更多的上下文,也許如果您發佈另一個問題與再現問題的示例。 – 2012-04-14 08:27:27