2012-03-13 3 views
2

Я получаю 0 кол результат, когда я уверен, преобразование XML в массив строк с помощью объекта XDcoument в массив строк согласно нижеПроблемы с преобразованием XML-документа в массив строк

Stream dataStream = response.GetResponseStream(); 

XDocument doc = XDocument.Load((dataStream)); 

var services = from s in doc.Descendants("Location") 
       select (string)s.Element("Name"); 

string[] locationArray = services.ToArray(); 

документа находится в соответствии с ниже

<Locations xmlns="http://schemas.microsoft.com/windowsazure" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> 
    <Location> 
    <Name>Anywhere US</Name> 
    </Location> 
    <Location> 
    <Name>South Central US</Name> 
    </Location> 
    <Location> 
    <Name>Anywhere Europe</Name> 
    </Location> 
    <Location> 
    <Name>West Europe</Name> 
    </Location> 
    <Location> 
    <Name>Anywhere Asia</Name> 
    </Location> 
    <Location> 
    <Name>Southeast Asia</Name> 
    </Location> 
    <Location> 
    <Name>East Asia</Name> 
    </Location> 
    <Location> 
    <Name>North Central US</Name> 
    </Location> 
    <Location> 
    <Name>North Europe</Name> 
    </Location> 
</Locations> 

Что должно быть неправильно с кодом для извлечения массива местоположения?

ответ

1

Интересная проблема это.

Из-за вашего пространства имен xmlns имена всех элементов имеют это пространство имен. Это работает:

var locations = from s in 
       doc.Descendants("{http://schemas.microsoft.com/windowsazure}Name") 
       select s.Value; 

locations теперь содержит все места

Чтобы сделать его более удобным для чтения вы можете сделать это:

var services = from s in doc.Descendants() 
       where s.Name.LocalName == "Location" 
       select s.Value; 
+0

Спасибо как запрос работал, как шарм! –

+0

Ваш прием! :) – gideon

1

У вас есть определение пространства имен в элементе Locations. Таким образом, имя элемента: {http://schemas.microsoft.com/windowsazure}Location и не местоположение.

Если удалить определение пространства имен из элемента Locations тогда ваш запрос выполнить правильно и возвращает счетчик 9 Расположение элементов

Смежные вопросы