[英]Deserializing specific XML data into class C#
我希望我不再重復這個問題,但是我找不到可以幫助我的東西。
我有以下要反序列化到我的類中的.xml。
<?xml version="1.0" encoding="UTF-8" ?>
<config>
<buildings>
<building>
<name>Name</name>
<id>1</id>
<build_time>750</build_time>
<time_factor>1.2</time_factor>
</building>
<building>
<name>Name</name>
<id>2</id>
<build_time>150</build_time>
<time_factor>1.8</time_factor>
</building>
<building>
<name>Name</name>
<id>3</id>
<build_time>950</build_time>
<time_factor>1.4</time_factor>
</building>
</buildings>
</config>
我想將id = 2的元素的名稱,id,building_time和time_factor加載到以下類中。
public class Test
{
public string name { get; set; }
public int id { get; set; }
public int build_time { get; set; }
public double time_factor { get; set; }
}
什么是執行此任務的最佳方法? 謝謝。
您可以將XML加載到System.Xml.XmlDocument
( https://msdn.microsoft.com/en-us/library/system.xml.xmldocument ( v= System.Xml.XmlDocument
) System.Xml.XmlDocument
)類實例中,並讀取特定的C#對象中需要的節點。
另一種選擇是,您可以使用XPATH( https://msdn.microsoft.com/zh-cn/library/ms256086 ( v= vs.110).aspx)。
希望能幫助到你。
嘗試以下操作:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication1
{
class Program
{
const string FILENAME = @"c:\temp\test2.xml";
static void Main(string[] args)
{
XDocument doc = XDocument.Load(FILENAME);
Test test1 = doc.Descendants("building")
.Where(x => (int)x.Element("id") == 1)
.Select(x => new Test() {
name = (string)x.Element("name"),
id = (int)x.Element("id"),
build_time = (int)x.Element("build_time"),
time_factor = (double)x.Element("time_factor")
}).FirstOrDefault();
}
}
public class Test
{
public string name { get; set; }
public int id { get; set; }
public int build_time { get; set; }
public double time_factor { get; set; }
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.