[在我的工作中,我正在维护一个旧系统(.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的最佳实践,或者是否有一些有助于此服务的软件包。
谢谢。
您可以为您的课程创建扩展,并按如下所示使用:
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();