0

同じパスを持つ要素がほとんどないため、インデックス # で SelectSingleNode を使用したい。

xDoc.DocumentElement.SelectSingleNode(xPath).InnerText = xValue.ToString();

xPath が次の文字列の場合:

"/パラメータ [@tag='tool_od']/Value/ValueSeries/ Value[Index=1] /value"

または "/Parameter [@tag='tool_od']/Value/ValueSeries/ Value[1] /value"

または "/Parameter [@tag='tool_od']/Value/ValueSeries/ Value[@Index=1] /value"

これらのオプションのすべてで、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーが表示されます。

これは xml の一部です。selectsinglenode で各子にアクセスできるようにしたいと考えています。

<ValueSeries>
            <Value>
              <value>25</value>
            </Value>
            <Value>
              <value>999012.0</value>
            </Value>
            <Value>
              <value>999012.0</value>
            </Value>
</ValueSeries>

インデックス部分を削除すると、パスは正常に機能しますが、最初の要素にのみアクセスし、他の要素にはアクセスしません。

4

2 に答える 2

0

私のエラーは、インデックス「0」を使用したことが原因でした。最初のインデックスは 1 です。

于 2012-10-22T10:56:07.410 に答える
0

入力 xml を確認できなければ、問題の正確な原因を特定することは困難です。

xDoc.DocumentElementとにかくxpathがルートノード(/)を参照しているため、使用する必要がないことに注意してくださいxDoc.SelectSingleNode(...

「ValueSeries」の最初の「Value」要素を探している場合、2 番目の xpath は正しいように見えますが (値に値が含まれていますか?)、xml がどのように見えるかによって異なります。

「オブジェクト参照」エラーは、SelectSingleNode が null を返し (xpath が見つからないため)、プロパティ InnerText を設定しようとしていることが原因です。

于 2012-10-22T09:45:32.307 に答える