包含反序列化列表的格式 XML
Format XML containing List for Deserialization
我有一些数据需要通过我目前正在处理的 C# 应用程序从 XML 文件传输到 PostgreSQL 数据库。
我现在面临的问题是我现在需要向 XML 添加某种列表。目前看起来像这样:
<itemOne>stuff</itemOne>
<itemTwo>otherStuff</itemTwo>
<listOfItems>
<listItem>
<partOne>123</partOne>
<partTwo>abc</partTwo>
</listItem>
<listItem>
<partOne>123</partOne>
<partTwo>abc</partTwo>
</listItem>
</listOfItems>
所以我发现了很多处理如何反序列化列表主题的线程。但是他们都开始说应该修改提议的XML。因为我在这方面拥有我所希望的所有自由,所以我想首先创建一个最佳的 XML 格式。
嗯,然后反序列化吧。因此,如果有任何格式的列表可以由 XmlSerializer.Deserialize() 自动处理,那就太棒了。
只要 class 的形状匹配,该数据就会由 XmlSerializer
自动处理。例如:
[XmlRoot("yourRootName")]
public class Foo {
[XmlElement("itemOne")] public string A {get;set;}
[XmlElement("itemTwo")] public string B {get;set;}
[XmlArray("listOfItems")]
[XmlArrayItem("listItem")]
public List<Bar> Bars {get;set;}
}
public class Bar {
[XmlElement("partOne")] public int C {get;set;}
[XmlElement("partTwo")] public string D {get;set;}
}
当然,如果是我的话,我会想说得简洁一些:
<betterName foo="stuff" blab="otherStuff">
<nameMe a="123" b="abc"/>
<nameMe a="456" b="def"/>
</betterName>
这只需要一些最小的更改:
[XmlRoot("betterName")]
public class Foo {
[XmlAttribute("foo")] public string A {get;set;}
[XmlAttribute("bar")] public string B {get;set;}
[XmlElement("nameMe")]
public List<Bar> Bars {get;set;}
}
public class Bar {
[XmlAttribute("a")] public int C {get;set;}
[XmlAttribute("b")] public string D {get;set;}
}
我有一些数据需要通过我目前正在处理的 C# 应用程序从 XML 文件传输到 PostgreSQL 数据库。
我现在面临的问题是我现在需要向 XML 添加某种列表。目前看起来像这样:
<itemOne>stuff</itemOne>
<itemTwo>otherStuff</itemTwo>
<listOfItems>
<listItem>
<partOne>123</partOne>
<partTwo>abc</partTwo>
</listItem>
<listItem>
<partOne>123</partOne>
<partTwo>abc</partTwo>
</listItem>
</listOfItems>
所以我发现了很多处理如何反序列化列表主题的线程。但是他们都开始说应该修改提议的XML。因为我在这方面拥有我所希望的所有自由,所以我想首先创建一个最佳的 XML 格式。
嗯,然后反序列化吧。因此,如果有任何格式的列表可以由 XmlSerializer.Deserialize() 自动处理,那就太棒了。
只要 class 的形状匹配,该数据就会由 XmlSerializer
自动处理。例如:
[XmlRoot("yourRootName")]
public class Foo {
[XmlElement("itemOne")] public string A {get;set;}
[XmlElement("itemTwo")] public string B {get;set;}
[XmlArray("listOfItems")]
[XmlArrayItem("listItem")]
public List<Bar> Bars {get;set;}
}
public class Bar {
[XmlElement("partOne")] public int C {get;set;}
[XmlElement("partTwo")] public string D {get;set;}
}
当然,如果是我的话,我会想说得简洁一些:
<betterName foo="stuff" blab="otherStuff">
<nameMe a="123" b="abc"/>
<nameMe a="456" b="def"/>
</betterName>
这只需要一些最小的更改:
[XmlRoot("betterName")]
public class Foo {
[XmlAttribute("foo")] public string A {get;set;}
[XmlAttribute("bar")] public string B {get;set;}
[XmlElement("nameMe")]
public List<Bar> Bars {get;set;}
}
public class Bar {
[XmlAttribute("a")] public int C {get;set;}
[XmlAttribute("b")] public string D {get;set;}
}