2012-04-11 4 views
3

У меня есть XML-ридер, но я получаю сообщение об ошибке, когда пытаюсь прочитать XML из URL-адреса (внешнего источника).C# Ошибка при чтении XML из URL

Это код, у меня есть банкомат:

XmlReader xmlReader = XmlReader.Create("http://dl.bukkit.org/api/1.0/downloads/projects/craftbukkit/view/build-1330/"); 
     while (xmlReader.Read()) 
     { 

     } 

Очень простой код, но он возвращает ошибку, которая говорит:

Данные на корневом уровне является недействительным. Строка 1, позиция 1.

Есть идеи?
Я не могу редактировать XML, потому что это не мое.

Заранее благодарен!

+0

Как выглядит документ Xml, если вы пытаетесь получить к нему доступ из своего веб-браузера? – Filburt

+4

Это не Xml, это Json. – Phil

+0

@Phil Это может быть вопрос о нобе, но трудно ли прочитать Json в C#? Я все еще немного новый ... EDIT: Потому что, когда я читаю файл через WebClient, я возвращаю неформатированный файл. –

ответ

4

Если вы используете Fiddler для анализа ответа, возвращаемого сервером, вы увидите, что вы получаете JSON вместо XML. Вы можете добавить параметр к URL-адресу, чтобы получить XML:

http://dl.bukkit.org/api/1.0/downloads/projects/craftbukkit/view/build-1330/?format=xml 
+1

Так что это значит, что он преобразует страницу в XML? Кажется, это работает :). –

+0

У вас есть три варианта. Во-первых, вы можете установить заголовок 'Accept' в' text/xml', который, кажется, немного сложнее с 'XmlReader'. Во-вторых, вы можете добавить параметр, который является признаком используемого вами API, и поэтому не стандартизирован. В-третьих, вы можете проанализировать JSON, возвращенный веб-службой, с помощью [DataContractJsonSerializer] (http://msdn.microsoft.com/en-us/library/system.runtime.serialization.json.datacontractjsonserializer.aspx) или других сторонних разработчиков, (что было бы самым быстрым подходом этих трех). – Gene

+0

Json кажется немного тяжело для меня :(, я думаю, что я пойду со вторым вариантом, параметром. Но я обязательно посмотрю на третий вариант, спасибо! –

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