TXMLDocumentを使用してXMLの入出力を行おうとしております。
あるタグ内に同じ名前のタグが並び、Attributeで区別しようとして
<IDDefs>
<IDDef ID="ID0">
・・・
</IDDef>
<IDDef ID="ID1">
・・・
</IDDef>
・
・
・
</IDDefs>
の様な構成を想定しています。出力はうまくいきましたが、
入力時、(IDDefsNode: IXMLNode)
IDDefsNode := ParentNode.ChildNodes.FindNode('IDDefs');
ここまではうまくいくのですが、(IDDefsNodes: IXMLNodeList)
IDDefsNodes := IDDefsNode.ChildNodes;
ここのChildNodesが「00000000 で 00000000 のアクセス違反」と出て
ChildNodesプロパティがアクセスできません。
原因、対策等ご存じの方がいらっしゃいましたらご教授願います。
> IDDefsNode := ParentNode.ChildNodes.FindNode('IDDefs');
GetNode メソッド が nil を返しているとかでは、ないですよね・・・
igyさん、早速の返信ありがとうございます。
IDDefsNode自体はnilではありません。デバッガで見ても
きちんとアドレスが表示されており、HasChildNodesプロパティ
もtrueとなっています。XMLプロパティもきちんと取り込めている
ようですしGetChildNodes関数が行方しれずとなっている感じです。
自己解決です。
IDDefタグが14個以上ある時、ChildNodesがアクセス違反となっていました。
結論としてはTXMLDocumentの生成時、引数(オーナー)をnilにしており、
オーナーをXML操作を行うフォームにすれば問題なく動作しました。
両者の違いが全く分からずまた<IDDefs>タグと同レベルのタグ(これももち
ろんその上のレベルのChildNodesです)のNodeValue等は問題なく読めていた
ので全くそこを怪しむ事はしていませんでした。
解決はしましたが、なんだか腑に落ちない感じでした。
igyさんありがとうございました。
ツイート | ![]() |