如何解决使用具有未知根元素的XmlSerializer
我有一些看起来像这样的XML文件:
文件“ B156.xml”
<B156>
<Customer>
<Name>The Barn</Name>
<Phone>0427825166</Phone>
</Customer>
<Orders>
<Item>
<Description>Black toner</Description>
<Amount>$59.00</Amount>
</Item>
<Orders>
</B156>
文件“ B172.xml”
<B172>
<Customer>
<Name>Pixie Inc</Name>
<Phone>0426553190</Phone>
</Customer>
<Orders>
<Item>
<Description>Colour toner</Description>
<Amount>$79.00</Amount>
</Item>
<Orders>
</B172>
在这种情况下,考虑到根元素是动态的,并且不能使用XmlRoot(“ RootName”)来指定它,如何使用XmlSerializer?
解决方法
您可以尝试一下
CLASS OBJECT
[XmlRoot("root")]
public class CustomerOrder
{
public Customer Customer { get; set; }
[XmlArray("Orders")]
[XmlArrayItem("Item")]
public List<Order> Orders { get; set; }
}
public class Customer
{
public string Name { get; set; }
public string Phone { get; set; }
}
public class Order
{
public string Description { get; set; }
public string Amount { get; set; }
}
CHANGEROOT方法
private static XmlDocument changeRoot(XmlDocument xmlDocument)
{
var newXmlDocument = new XmlDocument();
var newRoot = newXmlDocument.CreateElement("root");
newXmlDocument.AppendChild(newRoot);
newRoot.InnerXml = xmlDocument.DocumentElement.InnerXml;
return newXmlDocument;
}
SERIALIZATION
var xmlDocument = new XmlDocument();
xmlDocument.Load("XMLFile1.xml");
xmlDocument = changeRoot(xmlDocument);
XmlSerializer serializer = new XmlSerializer(typeof(CustomerOrder));
CustomerOrder result;
using (TextReader reader = new StringReader(xmlDocument.InnerXml))
{
result = (CustomerOrder)serializer.Deserialize(reader);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。