Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi Xml读取无法读取下一个签名_Xml_Delphi - Fatal编程技术网

Delphi Xml读取无法读取下一个签名

Delphi Xml读取无法读取下一个签名,xml,delphi,Xml,Delphi,Myxml文件是这样的 <DATAPACKET> <ROWDATA> <LINE1> <ROW Attr1="111" Attr2="2121" /> </LINE1> <LINE2> <ROW At1="11" At2="2211" />

Myxml文件是这样的

<DATAPACKET>
          <ROWDATA>
             <LINE1>
               <ROW Attr1="111" Attr2="2121" />
             </LINE1>
             <LINE2>
               <ROW At1="11" At2="2211" />
             </LINE2>
           </ROWDATA>
          <ROWDATA>
             <LINE1>
               <ROW Attr1="333" Attr2="2121" />
             </LINE1>
             <LINE2>
               <ROW At1="11" At2="2211" />
             </LINE2>
           </ROWDATA>
....
</DATAPACKET>

....
还有我的代码来解析它
我使用delphi7和TXMLDocument

Rows := MyXml.DocumentElement.ChildNodes.First ;//Get first rowdata
Line1 := Rows.ChildNodes.First ;    // then first line1
Curnode := Line1.ChildNodes.First ;  // 
For kk := 0 To Rows.ChildNodes.Count-1 Do Begin
    if (Curnode.Attributes['Attr1'] <> null) then
         Form1.Memo1.Lines.Add(CurNode.Attributes['Attr1']) ;
    Curnode := Rows.NextSibling;
End ;
行:=MyXml.DocumentElement.ChildNodes.First//获取第一行数据
第1行:=Rows.ChildNodes.First;//然后是第1行
Curnode:=Line1.ChildNodes.First;//
对于kk:=0到Rows.ChildNodes.Count-1不开始
如果(Curnode.Attributes['Attr1']null),则
Form1.Memo1.Lines.Add(CurNode.Attributes['Attr1']);
Curnode:=Rows.NextSibling;
结束;
它只是111 但是不能333和


致以最诚挚的问候

当然不行。第一个
元素没有同级元素。其父代(
LINE1
)有一个兄弟姐妹(
LINE2
),但兄弟姐妹与堂兄弟姐妹不同。此外,
Curnode
一开始指的是一个
ROW
元素,但在循环的第一次迭代结束时,您将其分配给下一个
ROWDATA
元素,该元素根本没有
Attr1
属性。那么我如何获得下一行呢。我认为我的问题在于迭代行。您可以尝试使用XPath查询
//ROW
,然后迭代该列表。它提供了整个文档中所有
元素的列表,而不考虑它们的父元素。如果你不想这样做,那么考虑一下你有一棵树,你想迭代一下它的叶子。树遍历算法同样适用于XML,它是一种类似树的数据结构。我刚刚给了你很多新单词;在下一个后续问题之前,请务必阅读有关它们的内容。您可能会发现有用的。NativeXml解决了我的问题。你可以毫无问题地阅读。