从字符串C#解析XML [英] Parsing XML from string C#

查看:356
本文介绍了从字符串C#解析XML的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想反序列化一个字符串, response.Content ,这个XML

I am trying to deserialize a string, response.Content, with this XML

<?xml version="1.0" encoding="utf-8"?><root><uri><![CDATA[http://api.bart.gov/api/stn.aspx?cmd=stns]]></uri><stations><station><name>12th St. Oakland City Center</name><abbr>12TH</abbr><gtfs_latitude>37.803664</gtfs_latitude><gtfs_longitude>-122.271604</gtfs_longitude><address>1245 Broadway</address><city>Oakland</city><county>alameda</county><state>CA</state><zipcode>94612</zipcode></station>

我用这code到反序列化:

I am using this code to deserialize it:

var serializer = new XmlSerializer(typeof(Stations), new XmlRootAttribute("root"));
Stations result;
using (TextReader reader = new StringReader(response.Content))
{
    result = (Stations)serializer.Deserialize(reader);
}

我那么有频道此处类中声明

[XmlRoot]
public class Stations
{

    [XmlElement]
    public string name;

}

不过,我的名称为空。知道为什么吗?

However, my name is null. Any idea why?

推荐答案

在使用的XmlSerializer 您应该模仿所有的XML结构的类。

While using XmlSerializer you should imitate all the xml structure with your classes.

[XmlRoot(ElementName = "root")]
public class Root
{
    [XmlArray(ElementName = "stations"), XmlArrayItem(ElementName = "station")]
    public Station[] Stations { get; set; }
}

public class Station
{
    [XmlElement(ElementName = "name")]
    public string Name { get; set; }
}

然后就可以反序列化以这种方式您的数据。

Then you can deserialize your data in that way.

var data = ""; //your xml goes here
var serializer = new XmlSerializer(typeof(Root));
using (var reader = new StringReader(data))
{
    var root = (Root)serializer.Deserialize(reader);
}

这篇关于从字符串C#解析XML的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆