2014-11-28 3 views
-1

Когда я отправляю указанный ниже запрос через Chrome или Explorer, я получаю чистый XML-код с сервера, и все в порядке.Загруженный XML неорганизован

http://et.water.ca.gov/api/data?appKey=e5eef4c3-7d8b-48f9-8152-9cad1dbe85c4&targets=15&startDate=2013-10-1&endDate=2013-10-3&dataItems=hly-air-tmp

здесь является первая строка XML:

<et-xml xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
<data><provider name="cimis" type="station" owner="water.ca.gov"> 
<record date="2013-10-01" julian="274" hour="0100" station="15" standard="english" zip-code="93246, 93245, 93234, 93202, 93266" scope="hourly"> 
    <hly-air-tmp qc=" " unit="(F)">63.2</hly-air-tmp> 
</record> 
<record date="2013-10-01" julian="274" hour="0200" station="15" standard="english" zip-code="93246, 93245, 93234, 93202, 93266" scope="hourly"> 
    <hly-air-tmp qc=" " unit="(F)">63.8</hly-air-tmp> 
</record> 
<record date="2013-10-01" julian="274" hour="0300" station="15" standard="english" zip-code="93246, 93245, 93234, 93202, 93266" scope="hourly"> 
    <hly-air-tmp qc=" " unit="(F)">64.1</hly-air-tmp> 
</record> 
<record date="2013-10-01" julian="274" hour="0400" station="15" standard="english" zip-code="93246, 93245, 93234, 93202, 93266" scope="hourly"> 
    <hly-air-tmp qc=" " unit="(F)">62.7</hly-air-tmp> 
</record> 
<record date="2013-10-01" julian="274" hour="050 

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

Dim myWebClient As New WebClient() 

myWebClient.DownloadFile("http://et.water.ca.gov/api/data?appKey=e5eef4c3-7d8b-48f9-8152-9cad1dbe85c4&targets=15&startDate=2013-10-1&endDate=2013-10-3&dataItems=hly-air-tmp", fileName) 

Он загружает файл. Загруженный файл по-прежнему содержит данные, которые я ожидаю, но формат файла изменен, и браузеры не могут загрузить его в виде XML-файла.

Я посылаю вам несколько первых строк загруженного файла:

{"Data":{"Providers":[{"Name":"cimis","Type":"station","Owner":"water.ca.gov","Records":[{"Date":"2013-10-01","Julian":"274","Hour":"0100","Station":"15","Standard":"english","ZipCodes":"93246, 93245, 93234, 93202, 93266","Scope":"hourly","HlyAirTmp":{"Value":"63.2","Qc":" ","Unit":"(F)"}},{"Date":"2013-10-01","Julian":"274","Hour":"0200","Station":"15","Standard":"english","ZipCodes":"93246, 93245, 93234, 93202, 93266","Scope":"hourly","HlyAirTmp":{"Value":"63.8","Qc":" ","Unit":"(F)"}},{"Date":"2013-10-01","Julian":"274","Hour":"0300","Station":"15","Standard":"english","ZipCodes":"93246, 93245, 93234, 93202, 93266","Scope":"hourly","HlyAirTmp":{"Value":"64.1","Qc":" ","Unit":"(F)"}},{"Date":"2013-10-01","Julian":"274","Hour":"0400","Station":"15","Standard":"english","ZipCodes":"93246, 93245, 93234, 93202, 93266","Scope":"hourly","HlyAirTmp":{"Value":"62.7","Qc":" ","Unit":"(F)"}},{"Date":"2013-10-01","Julian":"274","Hour":"0500","Station":"15","Standard":"english","ZipCodes":"93246, 93245, 93234, 93202, 9

Я использую следующий код, который работает найти для разбора XML, чтобы разобрать новый файл:

Dim reader As XmlTextReader 
reader = New XmlTextReader("C:\Users\lenovo.pc\Desktop\CIMIS\bin\Debug\ms-banner.xml") 
reader.ReadToFollowing("hly-air-tmp") 

но он возвращает следующую ошибку:

Data at the root level is invalid. Line 1, position 1. 

Есть ли способ, которым я могу загрузить хорошо отформатированный файл? Если нет, как я могу конвертировать загруженный файл в хорошо отформатированный XML (он содержит все необходимые мне данные).

+0

Вам нужно установить заголовок 'Accept', чтобы сказать, что вы хотите получать' application/xml', а не (по внешнему виду), 'application/json'. Чтение ['WebClient.Headers'] (http://msdn.microsoft.com/en-us/library/system.net.webclient.headers (v = vs.110) .aspx) указывает, что вам, возможно, придется переключиться на используя класс 'HttpWebRequest' для установки заголовка' Accept'. –

+0

Это сработало! Теперь я получаю XML с сервера. Вот что я сделал, если кто-то еще хочет знать: Dim request As HttpWebRequest = DirectCast (WebRequest.Create ("http://et.water.ca.gov/api/data?appKey= e5eef4c3-7d8b-48f9-8152-9cad1dbe85c4 & target = 15 & startDate = 2013-10-1 & endDate = 2013-10-1 & dataItems = hly-air-tmp "), HttpWebRequest) request.Accept =" application/xml " Dim myHttpWebResponse As HttpWebResponse = DirectCast (request.GetResponse(), HttpWebResponse) Dim response As WebResponse = request.GetResponse() –

ответ

0

Данные в этом файле находятся в формате JSON не в формате XML.

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