2017-11-29 7 views
-1

をオブジェクトに変換のXMLは、私はそのようなXMLを持つC#

public class Person 
    { 
     public string Name{ get; set; } 
     public string Surname{ get; set; } 
     public string City { get ; set; } 

    } 

機能: 公共の静的な無効

SendTheLoadedPerson(ObservableCollection<ObservableCollection<Person>> list) 
{ 
XmlRootAttribute oRootAttr = new XmlRootAttribute(); 
      XDocument doc = XDocument.Parse(path); 
      var pepoleList= (from r in doc.Root.Elements("Person") 
         select new Person() 
         { 
          Name = (string)r.Element("Name"), 
          Surname = (string)r.Element("Surname"), 
          City = (string)r.Element("City") 

         }).ToList(); 
} 

私はしたいと思いますすべての人物をリストに追加するObservableCollection> list しかし、一度私はそれを行う方法がわからない、さらにpepoleListが空に戻るより あなたは何かヒントを教えてくれますか?

<!-- Persons maybe, not Person... --> 
<Persons> 
    <Person> 
    <Name>Asd</Name> 
    <Surname>Dsa/Surname> 
    <City>ASdasd</City> 
    </Person> 
    <Person> 
    <Name>Asadas</Name> 
    <Surname>Dsadsad</Surname> 
    <City>dsadsa</City> 
    </Person> 
</Persons> 

開始:私はのObservableCollection>リストの他の人がちょうどオブジェクト

+0

[オブジェクトをxmlに逆シリアル化する方法](https://stackoverflow.com/questions/10518372/how-to-deserialize-xml-to-object) – Sparrow

+0

の可能な複製はありません。 stackoverflowと私は何か私の場合に似て何かを見つけることはありません – Elgahir

+0

それはあなたが持っている正確なXMLですか?一人称の「姓」要素が不正です。 –

答えて

0

のリストを持って実際に、私は適切に解析することがトリッキーになり、あなたのXMLにタイプミスがあると思いしたので 私の場合は、他よりも切り抜いていますその仮定から、(ルートタグを含む)あなたのクラスを定義:

[XmlRoot("Persons")] 
public class Persons 
{ 
    [XmlElement("Person")] 
    public List<Person> Persons { get; set; } 
} 

public class Person 
{ 
    [XmlElement("Name")] 
    public String Name { get; set; } 

    [XmlElement("Surname")] 
    public String Surname { get; set; } 

    [XmlElement("City")] 
    public String City { get; set; } 
} 

し、ファイルデシリアライズ:

Persons persons = null; 
XmlSerializer serializer = new XmlSerializer(typeof(Persons)); 

using (FileStream stream = new FileStream(@"C:\Path\To\File\MyXML.xml",FileMode.Open)) 
    persons = (Persons)serializer.Deserialize(stream); 
+0

答えてくれてありがとうございます - しかし、私のクラスを定義する必要はありますか? ありません何かをする方法エルセ?それは大きなプロジェクトです、私はいくつかの方法を行うだけです とにかくお返事ありがとう! – Elgahir

+0

代替案があるかもしれませんが、複雑で複雑なものになる危険性があります。なぜあなたは別のアプローチが必要ですか? –

+0

まずはこのクラスのPersonのリストはありません。このステップで私の変更がどのように変わるかはわかりません。このプロジェクトはほぼ終わりです – Elgahir

関連する問題