在.NET Framework中将对象转换为XML

问题描述 投票:0回答:1

[在我的工作中,我正在维护一个旧系统(.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的最佳实践,或者是否有一些有助于此服务的软件包。

谢谢。

c# .net xml object converters
1个回答
0
投票

您可以为您的课程创建扩展,并按如下所示使用:

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();
© www.soinside.com 2019 - 2024. All rights reserved.