【发布时间】:2020-12-18 14:28:41
【问题描述】:
我的代码是:
XmlDoc := NewXMLDocument;
with XmlDoc do
Options := Options + [doNodeAutoIndent];
[...]
N := Parent.ChildNodes.FindNode('KONTRAHENT');
while N <> nil do
begin
if N.ChildNodes['ID_KONTRAHENTA'].NodeValue = KontrNr then
DoSomething;
N := N.NextSibling;
end;
和这样的 XML:
<KARTOTEKA_KONTRAHENTOW>
<KONTRAHENT>
<ID_KONTRAHENTA>925</ID_KONTRAHENTA>
</KONTRAHENT>
<KONTRAHENT>
<ID_KONTRAHENTA>1208</ID_KONTRAHENTA>
</KONTRAHENT>
</KARTOTEKA_KONTRAHENTOW>
在 Watch Parent.XML 中查看的数据看起来:
'<KARTOTEKA_KONTRAHENTOW>'#$D#$A#9#9'<KONTRAHENT>'#$D#$A#9#9#9'<ID_KONTRAHENTA>925</ID_KONTRAHENTA>'#$D#$A#9#9'</KONTRAHENT>'#$D#$A#9#9'<KONTRAHENT>'#$D#$A#9#9#9'<ID_KONTRAHENTA>1208</ID_KONTRAHENTA>'#$D#$A#9#9'</KONTRAHENT>'#$D#$A#9'</KARTOTEKA_KONTRAHENTOW>'
当我在循环中读取节点时,设置了 Options: [doNodeAutoIndent] 然后我有一些这样的节点:N = '#$D#$A#9#9' 和节点数 = 7(而不是 2,在这个例子中)
没有 doNodeAutoIndent,一切正常,节点数 = 2,但我的 XML 文件在一行中 :(
问题是: 启用doNodeAutoIndent时如何绕过空的NextSibling?
【问题讨论】:
-
好的,但问题出在哪里?
-
谢谢。我正在考虑它,但我没有注意到我没有问这个问题。问题是:“启用 doNodeAutoIndent 时如何绕过空的 NextSibling?”
标签: xml delphi nextsibling