0

XDocument と LINQ で遊んでいます。書き込むファイルを取得できました:

<SchoolData storeName="mikveIsrael" location="mikve">
    <employee>
        <personalInfo>
            <name>Ilan Berlinbluv</name>
            <zip>58505</zip>
        </personalInfo>
        <employeeInfo>
            <salary>5000</salary>
            <id>1</id>
        </employeeInfo>
    </employee>
    <employee>
        <personalInfo>
            <name>Noam Inbar</name>
            <zip>58504</zip>
        </personalInfo>
        <employeeInfo>
            <salary>4500</salary>
            <id>2</id>
        </employeeInfo>
    </employee>
</SchoolData>  

このコードを使用して値を読み取ろうとしました:

public void QueryDoc(XDocument doc)
{
    var data = (from item in doc.Descendants("employee")
               select new {
                   name = item.Element("personalInfo").Element("name").Value,
                   salary = item.Element("employeeInfo").Element("salary").Value,
                   ID = item.Element("employeeInfo").Element("ID").Value,
                   zip = item.Element("personalInfo").Element("zip").Value
                   });
        foreach (var p in data)
        {
            Console.WriteLine(p.ToString());
        }
    }

ただし、コードを実行しようとすると、例外が発生します。このチュートリアルObject reference not set to an instance of an object.
に 従っていますが、画面では機能しますが、私の場合は機能しません。

4

2 に答える 2

2
ID = item.Element("personalInfo").Element("ID").Value,

する必要があります

ID = item.Element("employeeInfo").Element("id").Value,

間違った要素をクエリしています。これは値を返し、使用するnullと a をスローします。NullPointerException.Value

于 2013-10-31T12:10:50.587 に答える
1

この線

ID = item.Element("personalInfo").Element("ID").Value,

要素IDが存在しないため失敗しますpersonalInfo

于 2013-10-31T12:10:55.887 に答える