2016-09-20 5 views
-1

http://rtt.metroinfo.org.nz/RTT/Public/Utility/File.aspx?ContentType=SQLXML&Name=JPPlatform.xmlC# SQLXML Десериализация к классу или объекта

http://rtt.metroinfo.org.nz/RTT/Public/Utility/File.aspx?Name=JPRoutePositionET.xml&ContentType=SQLXML&PlatformTag=536

Оба эти мои выборки данных, которые я потянув вниз, используя HttpClient, я хочу, чтобы захватить атрибуты (?), Такие как PlatformTag, ETA и как.

Использование Univeral Apps для мобильных ПК и рабочего стола Windows 10. Но я не могу понять, что происходит, чтобы сделать это.

XDocument Document = XDocument.Parse(RESPONSE_CONSTANT); 
var Stops = from Stop in Document.Descendants("Platform") 
select new 
{ 
Platformtag = (string)Stop.Attribute("PlatformTag"), 
Platformno = (string)Stop.Attribute("PlatformNo")}; 
foreach (var item in Stops) 
BusData.Text = item.Platformtag; 
} 

Это то, что я в настоящее время, но ничего не происходит от него, он просто сидит там, как он не видит ничего, отсюда я не знаю достаточно о XML Парсинге найти следующий шаг.

Примечание: Response_Constant содержит такие данные: http://rtt.metroinfo.org.nz/RTT/Public/Utility/File.aspx?Name=JPRoutePositionET.xml&ContentType=SQLXML&PlatformTag=536

+2

Что вы пробовали? С какими проблемами вы столкнулись при реализации своего решения? –

+0

Что это такое, когда я получаю всегда это как ответ, я пробовал простые десеризаторы XML. У меня больше нет моего кода, который я пытался, так как он не делал то, что мне нужно, поэтому я избавился от него. Я пробовал такие вещи, как http://stackoverflow.com/questions/10150785/using-xmltextreader и другие технологии деселирования XML, но поскольку это не стандартный XML, они не будут работать так, как я хочу, чтобы они были – Jalomba

ответ

0

Попробуйте следующее. Пришлось изменить xml для замены амперсанда.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Xml; 
using System.Xml.Linq; 
using System.IO; 

namespace ConsoleApplication14 
{ 
    class Program 
    { 
     const string FILENAME = @"c:\temp\test.xml"; 
     static void Main(string[] args) 
     { 
      string xml = File.ReadAllText(FILENAME); 
      xml = xml.Replace("&", "&"); 
      StringReader sReader = new StringReader(xml); 
      XmlReaderSettings settings = new XmlReaderSettings(); 
      settings.ConformanceLevel = ConformanceLevel.Fragment; 
      XmlReader reader = XmlReader.Create(sReader); 

      List<Platform> platforms = new List<Platform>(); 
      while (!reader.EOF) 
      { 
       if (reader.Name != "Platform") 
       { 
        reader.ReadToFollowing("Platform"); 
       } 
       if (!reader.EOF) 
       { 
        XElement platform = (XElement)XElement.ReadFrom(reader); 

        platforms.Add(new Platform() 
        { 
         tag = (int)platform.Attribute("PlatformTag"), 
         no = (int?)platform.Attribute("PlatformNo"), 
         name = (string)platform.Attribute("Name"), 
         bearingToRoad = (double?)platform.Attribute("BearingToRoad"), 
         roadName = (string)platform.Attribute("RoadName"), 
         lat = (double)platform.Element(platform.Name.Namespace + "Position").Attribute("Lat"), 
         _long = (double)platform.Element(platform.Name.Namespace + "Position").Attribute("Long") 
        }); 
       } 
      } 
     } 
    } 
    public class Platform 
    { 
     public int tag { get; set; } 
     public int? no { get; set; } 
     public string name { get; set; } 
     public double? bearingToRoad { get; set; } 
     public string roadName { get; set; } 
     public double lat { get; set; } 
     public double _long { get; set; } 
    } 
} 
+0

. Не обращайте внимания на то, что , Я получил его работу, я пропустил что-то выше вашего кода. – Jalomba

+0

Спасибо за помощь :) Если у меня возникнут какие-либо проблемы, связанные с ее использованием для любой другой части API, я отправлю туда, и мы увидим, но из вашего кода похоже, что это будет очень похоже – Jalomba

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

  • Нет связанных вопросов^_^