如何使用 XmlSerializer C# 读取 XML 文件
How to read XML file using XmlSerializer C#
当我想使用 XmlSerializer 读取 XML 文件时遇到问题。
我的 xml 文件如下:
<?xml version="1.0" encoding="utf-8"?>
<contents>
<section id="1">
<element1>2</element1>
<element2>1</element2>
<idx>1</idx>
<idx>2</idx>
<idx>3</idx>
</section>
<section id="2">
<element1>2</element1>
<element2>1</element2>
</section>
<section id="3"/>
</contents>
这里是 类:
[Serializable()]
public class section
{
[XmlAttribute("id")]
public string id { get; set; }
[XmlElement("element1")]
public int element1 { get; set; }
[XmlElement("element2")]
public int element2 { get; set; }
[XmlElement("idx")]
public int[] idx { get; set; }
}
[Serializable()]
[XmlRoot("contents")]
public class contents
{
[XmlArray("section")]
[XmlArrayItem("section", typeof(section))]
public section[] section { get; set; }
}
反序列化函数:
XmlSerializer serializer = new XmlSerializer(typeof(contents));
FileStream fs = new FileStream(path, FileMode.Open);
XmlReader reader = XmlReader.Create(fs);
contents i;
i = (contents)serializer.Deserialize(reader);
fs.Close();
foreach (section p in i.section)
{
Console.WriteLine(p.element1);
}
为什么不起作用?
我有参考 https://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer(v=vs.110).aspx 但它似乎没有用。
请帮助我!!!!!
试试这个...
使用...
using System.Collections.Generic;
using System.IO;
using System.Xml.Serialization;
类...(使用 http://xmltocsharp.azurewebsites.net/ 从您的 XML 创建)
[XmlRoot(ElementName = "section")]
public class Section
{
[XmlElement(ElementName = "element1")]
public string Element1 { get; set; }
[XmlElement(ElementName = "element2")]
public string Element2 { get; set; }
[XmlElement(ElementName = "idx")]
public List<string> Idx { get; set; }
[XmlAttribute(AttributeName = "id")]
public string Id { get; set; }
}
[XmlRoot(ElementName = "contents")]
public class Contents
{
[XmlElement(ElementName = "section")]
public List<Section> Section { get; set; }
}
代码...
Contents dezerializedXML = new Contents();
// Deserialize to object
XmlSerializer serializer = new XmlSerializer(typeof(Contents));
using (FileStream stream = File.OpenRead(@"xml.xml"))
{
dezerializedXML = (Contents)serializer.Deserialize(stream);
} // Put a break-point here, then mouse-over dezerializedXML
我把你的 XML 放在一个文件中 (xml.xml) 并从那里读取....
当我想使用 XmlSerializer 读取 XML 文件时遇到问题。 我的 xml 文件如下:
<?xml version="1.0" encoding="utf-8"?>
<contents>
<section id="1">
<element1>2</element1>
<element2>1</element2>
<idx>1</idx>
<idx>2</idx>
<idx>3</idx>
</section>
<section id="2">
<element1>2</element1>
<element2>1</element2>
</section>
<section id="3"/>
</contents>
这里是 类:
[Serializable()]
public class section
{
[XmlAttribute("id")]
public string id { get; set; }
[XmlElement("element1")]
public int element1 { get; set; }
[XmlElement("element2")]
public int element2 { get; set; }
[XmlElement("idx")]
public int[] idx { get; set; }
}
[Serializable()]
[XmlRoot("contents")]
public class contents
{
[XmlArray("section")]
[XmlArrayItem("section", typeof(section))]
public section[] section { get; set; }
}
反序列化函数:
XmlSerializer serializer = new XmlSerializer(typeof(contents));
FileStream fs = new FileStream(path, FileMode.Open);
XmlReader reader = XmlReader.Create(fs);
contents i;
i = (contents)serializer.Deserialize(reader);
fs.Close();
foreach (section p in i.section)
{
Console.WriteLine(p.element1);
}
为什么不起作用? 我有参考 https://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer(v=vs.110).aspx 但它似乎没有用。 请帮助我!!!!!
试试这个...
使用...
using System.Collections.Generic;
using System.IO;
using System.Xml.Serialization;
类...(使用 http://xmltocsharp.azurewebsites.net/ 从您的 XML 创建)
[XmlRoot(ElementName = "section")]
public class Section
{
[XmlElement(ElementName = "element1")]
public string Element1 { get; set; }
[XmlElement(ElementName = "element2")]
public string Element2 { get; set; }
[XmlElement(ElementName = "idx")]
public List<string> Idx { get; set; }
[XmlAttribute(AttributeName = "id")]
public string Id { get; set; }
}
[XmlRoot(ElementName = "contents")]
public class Contents
{
[XmlElement(ElementName = "section")]
public List<Section> Section { get; set; }
}
代码...
Contents dezerializedXML = new Contents();
// Deserialize to object
XmlSerializer serializer = new XmlSerializer(typeof(Contents));
using (FileStream stream = File.OpenRead(@"xml.xml"))
{
dezerializedXML = (Contents)serializer.Deserialize(stream);
} // Put a break-point here, then mouse-over dezerializedXML
我把你的 XML 放在一个文件中 (xml.xml) 并从那里读取....