Article View: pl.comp.lang.delphi
Article #347185XML, NextSibling i doNodeAutoIndent. Problem z "pustymi" węzłami.
From: Andrzej Szumowski
Date: Fri, 18 Dec 2020 13:41
Date: Fri, 18 Dec 2020 13:41
32 lines
2551 bytes
2551 bytes
Cześć
Mam taki kawałek kodu:
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
zrobCos;
N := N.NextSibling;
end;
oraz XML'a w stylu:
<KARTOTEKA_KONTRAHENTOW>
<KONTRAHENT>
<ID_KONTRAHENTA>925</ID_KONTRAHENTA>
</KONTRAHENT>
<KONTRAHENT>
<ID_KONTRAHENTA>1208</ID_KONTRAHENTA>
</KONTRAHENT>
</KARTOTEKA_KONTRAHENTOW>
w Watch'u Parent.XML wygląda tak:
'<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>'
I jak w pętli czytam kolejne węzły, to przy ustawionym w Options doNodeAutoIndent mam co drugi węzeł o zawartości: N = '#$D#$A#9#9'
Gdy jest bez doNodeAutoIndent to wszystko jest OK, ale wtedy cały plik po zapisaniu jest w 1 linijce. Mógłbym wprawdzie tworzyć plik przy wyłączonym NodeAutoIndent, a po zapisaniu utworzyć nowy XmlDoc z włączonym NodeAutoIndent i do niego zrobić LoadFromFile(niesformatowany_XML) i ponownie zapisać, ale takie rozwiązanie wydaje mi się bardzo na około.
Ma ktoś z szanownych forumowiczów pomysł, jak ominąć puste NextSibling'i przy włączonym doNodeAutoIndent?
Technical Details
Message-ID:
<0d0f4248-57b6-40f1-8542-4f937c3cececn@googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!fu-berlin.de!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mailShow Full Headers
Complete Article Headers
X-Received: by 2002:ac8:6bcc:: with SMTP id b12mr3908003qtt.55.1608298894284; Fri, 18 Dec 2020 05:41:34 -0800 (PST) X-Received: by 2002:a05:622a:30e:: with SMTP id q14mr4069132qtw.77.1608298893998; Fri, 18 Dec 2020 05:41:33 -0800 (PST) Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!fu-berlin.de!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail Newsgroups: pl.comp.lang.delphi Date: Fri, 18 Dec 2020 05:41:33 -0800 (PST) Complaints-To: groups-abuse@google.com Injection-Info: google-groups.googlegroups.com; posting-host=109.231.12.10; posting-account=NYnBIQoAAACbAgFhCt3ruVn1tKL-ISNJ NNTP-Posting-Host: 109.231.12.10 User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <0d0f4248-57b6-40f1-8542-4f937c3cececn@googlegroups.com> Subject: XML, NextSibling i doNodeAutoIndent. Problem z "pustymi" węzłami. From: Andrzej Szumowski <andszum@gmail.com> Injection-Date: Fri, 18 Dec 2020 13:41:34 +0000 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit