2015-01-23 2 views
0

Я получаю географическую информацию с веб-службы.
Я пытаюсь анализировать возвращаемые данные в течение нескольких часов, но не получаю.Как я могу прочитать XML

HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; 
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) 
{ 
    StreamReader reader = new StreamReader(response.GetResponseStream()); 
    string result = reader.ReadToEnd(); 
    XDocument document = XDocument.Parse(result, LoadOptions.None); 

я получил это

document <html> 
    <body> 
    <state>Apure</state> 
    <municipality>RÓMULO GALLEGOS</municipality> 
    <parish>URBANA ELORZA</parish> 
    <street>La Trinidad De Arauca</street> 
    </body> 
</html> System.Xml.Linq.XDocument 

Стараюсь

document.Elements("state") 
document.Descendants("body") 
document.GetElementsByTagName("state"); 

Но ничего.

Я уверен, что есть простой способ сделать что-то такое основное.

Я серьезно отношусь к тому, чтобы преобразовать это в строку и выполнить синтаксический анализ.

Доп соображением:

Поля включают его в результате переменная.
Потому что некоторая информация не имеет все поля.

+0

В чем проблема? Это недопустимый xml, который вы указали, поэтому будет выбрано исключение. Если это просто проблема форматирования вопроса, то какие результаты вы получите? 'Но ничего 'не помогает. – Jonesopolis

+0

Я добираюсь до части документа без ошибок. Я хочу прочитать контент. Если document.Descendats («body») дает мне набор элементов, я мог бы циклически получать каждый контент. Но нет. Вместо этого поставьте контейнер Linq. Я хочу знать, как я получаю что-то вроде Obj.state или Obj [0] .value –

+0

'document.Descendants (« state »). First(). Value' – Jonesopolis

ответ

0

Хорошо, я вношу изменения.

Я прочитал XElement вместо XDocument;

XElement sitemap = XElement.Parse(result, LoadOptions.None); 
foreach (var bodyElement in sitemap.Elements("body")) 
{ 
    foreach (var fieldElement in bodyElement.Elements()) 
    { 
     Console.WriteLine(fieldElement.Name); 
     Console.WriteLine(fieldElement.Value); 
    } 
} 

Возможно, есть способ пропустить первый прогиб, но все еще ищет его.
@ Jonesy line работает, но это означает, что я должен знать имена полей. Таким образом, я просто создаю информацию для значений, которые я получил.