1

私は例として次のXMLを持っています:

string xml =
@"<plist version='1.0'>
    <dict>
        <key>DataType</key>
        <string>Employee</string>
        <key>8000</key>
        <dict>
            <key>Id</key>
            <string>8000</string>
            <key>Prename</key>
            <string>Walter</string>
            <key>Name</key>
            <string>Walter Lohner Stans</string>
            <key>Initials</key>
            <string>MAL</string>
        </dict>
        <key>8001</key>
        <dict>
            <key>Id</key>
            <string>8001</string>
            <key>Prename</key>
            <string>Motorrad</string>
            <key>Name</key>
            <string> Meierskappel</string>
            <key>Initials</key>
            <string>MAM</string>
        </dict>
        <key>8004</key>
        <dict>
            <key>Id</key>
            <string>8004</string>
            <key>Prename</key>
            <string>Hanspeter</string>
            <key>Name</key>
            <string>Altenbürger AG  Horgen</string>
            <key>Initials</key>
            <string>FH</string>
        </dict>
    </dict>
</plist>";

この3人の従業員をリストとして取得したいと思います...

クラス従業員も定義されています:

//Class
public class Employee
{
    //Properties    
    public string Id { get; set; }
    public string Prename { get; set; }
    public string Name { get; set; }
    public string Initials { get; set; }
}

たとえば、xmlをメソッドに渡し、これらの3人の従業員を含む(従業員タイプの)リストを作成したい場合、解析はどのように機能しますか?

私はそのようなことから始めました:

public List<Employee> GetEmployees(string xml)
{
    using (XmlReader reader = XmlReader.Create(new StringReader(xml)))
    {

    }
}

しかし、実際には、1人の従業員を説明するこれらすべての「口述」を繰り返す方法と、一般的にどのように対処するかがわかりません。助けていただければ幸いです。

4

4 に答える 4

2

XmlSerializerメソッドを使用することでメリットが得られるように思えますDeserialize()

例を示すいくつかのリンクを次に示します。

C# - オブジェクト自体を xml デシリアライズする方法は?

C# XML をオブジェクトに逆シリアル化する

それが可能な方法だと思います。それ以外の場合は、XPath を使用してドキュメントを解析しXDocumentたりXmlDocument、ドキュメントをナビゲートしたりできます。ところで、Load()メソッド onを使用してXmlDocumentXML の文字列を読み込むことができます

    string xmlString = "<root><sub></sub></root>";
    XmlDocument doc = new XmlDocument();
    doc.Load(xmlString);

またはXML の文字列をオブジェクトにロードするParse()メソッド。XDocument

string str =
    @"<Root>
        <Child>Content</Child>
    </Root>";
    XDocument doc = XDocument.Parse(str);

どのテクニックを使用すればよいかわからない場合は、こちらをご覧ください。

XDocument または XmlDocument

私はあなたが始めるのに役立つ例をGoogleから見つけることさえできました:http://www.codeproject.com/Articles/169598/Parse-XML-Documents-by-XMLDocument-and-XDocument

もう 1 つの方法は、Linq2Xml 手法を使用することです。ここでも、それがどのように達成されるかを示す別の質問があります。

C# で XmlReader を使用して Xml を読み取る

回答の元となったブログ投稿は次のとおりです。

http://blogs.msdn.com/b/xmlteam/archive/2007/03/24/streaming-with-linq-to-xml-part-2.aspx

于 2012-10-02T09:32:48.160 に答える
1

このようなものがあなたのために働くことをお勧めします。

string xmlpath = "D:\new\test.xml";   

XmlDocument doc = new XmlDocument();
doc.Load(xmlpath);
XmlElement root = doc.DocumentElement;
XmlNodeList employ = root.GetElementsByTagName("Employee");
list<employee> employees=new <employee>();

foreach (XmlElement emp in employ)
{
    string id = emp.GetAttribute("id");
    string name = emp.GetAttribute("name");
    string desc = emp.GetAttribute("Prename");

    Employee e=new employee();
    e.id=id;
    e.Prename =desc;
    e.Name=name;
   employees.add(e);
}
于 2012-10-02T09:33:37.970 に答える