Delphi Xml读取无法读取下一个签名
Myxml文件是这样的Delphi Xml读取无法读取下一个签名,xml,delphi,Xml,Delphi,Myxml文件是这样的 <DATAPACKET> <ROWDATA> <LINE1> <ROW Attr1="111" Attr2="2121" /> </LINE1> <LINE2> <ROW At1="11" At2="2211" />
<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解决了我的问题。你可以毫无问题地阅读。