-1

私は次のようなxmlを持っています:

<RunResult>
  <PreviewRecords></PreviewRecords>
  <RecordsProcessed>100</RecordsProcessed>
  <LogError>false</LogError>
</RunResult>

次のコマンドを使用してノードの値を取得していますRecordsProcessed

int NofRecords = 0;
NofRecords = Convert.ToInt32(xdRunResultDoc.Root.Element("RunResult").Element("RecordsProcessed").Value;

しかし、この行では、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」という例外がスローされています。

どこが間違っているのか教えてください。

4

5 に答える 5

0

自分で解決策を見つけることができます。「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーの原因をデバッグして確認してみませんか?

ウォッチを追加するxdRunResultDocと、実行時にルートノードとは何か、何を取得するのかxdRunResultDoc.Root.Element("RunResult")などを確認できます.

ここであなたのルートノードは、RunResult呼び出されたルートノード内の要素を見つけることができませんRunResult

このコードプロジェクトのチュートリアルを確認してください。

于 2013-08-26T06:12:51.900 に答える
0

これは私のために働く:

string xmlstring = @"<?xml version='1.0' encoding='utf-8'?>
    <RunResult>
        <PreviewRecords></PreviewRecords>
        <RecordsProcessed>100</RecordsProcessed>
        <LogError>false</LogError>
    </RunResult>";

System.Xml.Linq.XDocument doc = XDocument.Parse(xmlstring);

int NofRecords = 0;

NofRecords = Convert.ToInt32(doc.Element("RunResult").Element("RecordsProcessed").Value);
于 2013-08-26T06:10:58.617 に答える
0

これを試して

int NofRcord = Convert.ToInt32(xdRunResultDoc.Root.Element("RecordsProcessed").Value);

詳細については、このリンクを参照してくださいhttp://msdn.microsoft.com/en-us/library/bb675196.aspx

于 2013-08-26T06:04:46.437 に答える
0

このコードを試してください

xml ファイルからテキスト全体を読み取り、それを XmlDocument にロードします

XmlNode rootNode = xDoc.SelectSingleNode("RunResult");
                            if (rootNode.HasChildNodes)
                            {
                                foreach (XmlNode node in rootNode.ChildNodes)
                                {
                                    if (node.Name =="RecordsProcessed")
                                    {

                                        NofRecords=Convert.ToInt32(node.InnerText);
                                    }
                                }
                            }
于 2013-08-26T06:25:07.937 に答える