0

我有以下xml

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

如果没有命名空间 (xmlns:i...),我可以使用以下查询

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

使用命名空间但没有前缀“i”,我可以使用以下查询

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

那么我该如何处理 te "i" 前缀呢?

谢谢。

4

1 回答 1

0

问题是当您提供命名空间前缀时,您需要显式地为该命名空间中的 XML 元素添加前缀。因此,在您的示例中,如果您明确指定前缀,i:Location那么您的查询将起作用。

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

它在没有前缀的情况下工作的原因是因为没有指定前缀,命名空间被认为是默认命名空间,因此Location默认范围为命名空间。

于 2012-04-13T07:39:36.810 回答