在 .NET Framework 中将对象转换为 XML
Convert objects to XML in .NET Framework
在我的工作中,我正在维护一个遗留系统 (.net framework 4.7)。它通过将对象转换为 xml(并保存到数据库)以及将对象转换为 xml 来发挥很大作用。
除了当前的应用程序,大量使用字符串来转换 xml.
中的对象
var xmlDoc = new XmlDocument();
xmlDoc.Load(ms);
foreach (XmlNode item in xmlDoc.ChildNodes)
{
if (item.Name == "xml")
{
foreach (XmlNode subitem in item.ChildNodes)
{
if (subitem.Name == "rs:data")
{
foreach (XmlNode sSubitem in subitem.ChildNodes)
{
if (sSubitem.Name == "rs:insert")
{
foreach (XmlNode itemsub in sSubitem.ChildNodes)
{
for (var i = 0; i < itemsub.Attributes.Count; i++)
{
if (itemsub.Attributes[i].Name == attrValue)
{
dataGenerator = itemsub.Attributes[i].Value;
}
}
}
}
}
}
}
}
}
示例 2:
_rootElements.Add(
new XElement("Books",
new XElement("Book_year", _year),
new XElement("Book_name", _book_name)
));
示例 3:
node.SelectSingleNode("DocumentType").InnerText
我正在考虑重写应用程序(它应该在 .net framework 4.7 中继续),但我想知道是否还有其他方法可以以更现代的方式使用 XML,不幸的是它无论如何都必须是 XML,所以我想知道是否有转换 XML 的最佳实践或一些有助于此服务的包。
谢谢。
您可以为您的 class 创建一个扩展并按如下方式使用:
public static class XmlExtensions
{
public static string ToXML(this YourClass value)
{
using(var sw = new System.IO.StringWriter())
{
var serializer = new XmlSerializer(value.GetType());
serializer.Serialize(sw, value);
return sw.ToString();
}
}
public static YourClass FromXML(string xml)
{
using(var sr = new System.IO.StringReader(xml))
{
var serializer = new XmlSerializer(typeof(YourClass ));
return serializer.Deserialize(sr) as YourClass ;
}
}
}
并称它为:
var obj = new YourClass();
// fill properties
var xml = obj.ToXML();
// To reverse from string to obj, use:
var obj2 = XmlExtensions.FromXML(xml);
在我的工作中,我正在维护一个遗留系统 (.net framework 4.7)。它通过将对象转换为 xml(并保存到数据库)以及将对象转换为 xml 来发挥很大作用。 除了当前的应用程序,大量使用字符串来转换 xml.
中的对象var xmlDoc = new XmlDocument();
xmlDoc.Load(ms);
foreach (XmlNode item in xmlDoc.ChildNodes)
{
if (item.Name == "xml")
{
foreach (XmlNode subitem in item.ChildNodes)
{
if (subitem.Name == "rs:data")
{
foreach (XmlNode sSubitem in subitem.ChildNodes)
{
if (sSubitem.Name == "rs:insert")
{
foreach (XmlNode itemsub in sSubitem.ChildNodes)
{
for (var i = 0; i < itemsub.Attributes.Count; i++)
{
if (itemsub.Attributes[i].Name == attrValue)
{
dataGenerator = itemsub.Attributes[i].Value;
}
}
}
}
}
}
}
}
}
示例 2:
_rootElements.Add(
new XElement("Books",
new XElement("Book_year", _year),
new XElement("Book_name", _book_name)
));
示例 3:
node.SelectSingleNode("DocumentType").InnerText
我正在考虑重写应用程序(它应该在 .net framework 4.7 中继续),但我想知道是否还有其他方法可以以更现代的方式使用 XML,不幸的是它无论如何都必须是 XML,所以我想知道是否有转换 XML 的最佳实践或一些有助于此服务的包。
谢谢。
您可以为您的 class 创建一个扩展并按如下方式使用:
public static class XmlExtensions
{
public static string ToXML(this YourClass value)
{
using(var sw = new System.IO.StringWriter())
{
var serializer = new XmlSerializer(value.GetType());
serializer.Serialize(sw, value);
return sw.ToString();
}
}
public static YourClass FromXML(string xml)
{
using(var sr = new System.IO.StringReader(xml))
{
var serializer = new XmlSerializer(typeof(YourClass ));
return serializer.Deserialize(sr) as YourClass ;
}
}
}
并称它为:
var obj = new YourClass();
// fill properties
var xml = obj.ToXML();
// To reverse from string to obj, use:
var obj2 = XmlExtensions.FromXML(xml);