gpt4 book ai didi

c# - C#中如何将XML转换为Object格式

转载 作者:太空宇宙 更新时间:2023-11-03 10:30:59 26 4
gpt4 key购买 nike

我想将这个 XML 转换成对象格式

- <information>
- <item>
<key>Name</key>
<value>NameValue</value>
</item>
- <item>
<key>Age</key>
<value>17</value>
</item>
- <item>
<key>Gender</key>
<value>MALE</value>
</item>
- </information>

对象类似,

Person.Name = "Name Value"
Person.Age = 17
Person.Gender = "Male"

最佳答案

您可以通过反射实现 XDocument,实现以下方式:

XDocument XDocument = XDocument.Parse(MyXml);

var nodes = XDocument.Descendants("item");

// Get the type contained in the name string
Type type = typeof(Person);

// create an instance of that type
object instance = Activator.CreateInstance(type);

// iterate on all properties and set each value one by one

foreach (var property in type.GetProperties())
{

// Set the value of the given property on the given instance
if (nodes.Descendants("key").Any(x => x.Value == property.Name)) // check if Property is in the xml
{
// exists so pick the node
var node = nodes.First(x => x.Descendants("key").First().Value == property.Name);
// set property value by converting to that type
property.SetValue(instance, Convert.ChangeType(node.Element("value").Value,property.PropertyType), null);
}
}


var tempPerson = (Person) instance;

我做了一个Example Fiddle

它也可以通过使用 Generics 进行重构而变得通用。

关于c# - C#中如何将XML转换为Object格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30230045/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com