2011-07-05 59 views
-1

如果我有外部XML供稿和內部類,自動讀取供稿並將數據映射到類的新實例的最佳方法是什麼?將XML數據映射到C#中的類

因此,如果XML提要就像

<people> 
    <person> 
     <name>Bob</name> 
    </person> 
    <person> 
     <name>Bill</name> 
    </person> 
</people> 

我的類Person有一個屬性名稱。現在我正在使用XmlReader,但這似乎效率低下

+1

您現在的執行方式是「低效率」?服務表現/代碼? – Fox32

回答

1

將xml映射到類中的最簡單方法是使用xml序列化。 -.Net框架附帶了您需要的一切。 問題是,您的xml需要以rigth格式被解串器讀取。

序列化實例:

XmlSerializer serializer = new XmlSerializer(typeof(List<Person>)); 
    TextWriter textWriter = new StreamWriter("people.xml"); 
    serializer.Serialize(textWriter, people); 
    textWriter.Close(); 

反序列化實例

XmlSerializer deserializer = new XmlSerializer(typeof(List<Person>)); 
    TextReader textReader = new StreamReader("people.xml"); 
    List<Person> people; 
    people= (List<Person>)deserializer.Deserialize(textReader); 
    textReader.Close(); 

XML結果

的XML應該是這樣的(我沒有測試):

<?xml version="1.0" encoding="utf-8"?> 
<ArrayOfPerson xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <Person> 
    <Name>Bob</Name> 
    </Person> 
    <Person> 
    <Name>Bill</Name> 
    </Person> 
</ArrayOfPerson> 
+0

我對序列化很熟悉,但我無法控制XML提要的格式。 – bep

+0

如果您對源格式「無法控制」,那麼您將不得不自己解析提要。其他任何事都是蠻幹的。 XmlReader非常適合這樣做。 –