c# - 从字符串 C# 解析 XML

标签 c# .net xml xml-deserialization

我正在尝试使用此 XML 反序列化字符串 response.Content

<?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>

我正在使用这段代码反序列化它:

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

然后我在此处声明了 Stations

[XmlRoot]
public class Stations
{

    [XmlElement]
    public string name;

}

但是,我的name 是空的。知道为什么吗?

最佳答案

在使用 XmlSerializer 时,您应该在您的类中模仿所有 xml 结构。

[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; }
}

然后你可以用那种方式反序列化你的数据。

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# - 从字符串 C# 解析 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31648313/

相关文章:

c# - 在 log4j/log4net 中捕获标准输出

.net - 温莎城堡并将实例创建为工厂

.net - 在 Windows 7 64 位和 Windows XP 32 位上创建 ClickOnce 应用程序 (mage.exe)

c# - 获取额外的 PaperSource 详细信息

java - 用 Java 解析巨大的 XML

java - Apache Axis : How to add complex parameter

C# SQL 插入命令

c# - Plugin.MediaManager.Forms:无法从Xamarin.Forms应用程序数据目录播放视频

c# - XAML Designer 使用 VS2015 RTM 抛出拒绝访问异常

python - 在 xpath 上的过滤器后使用索引