Andrzej Szumowski

właściciel, FINA Andrzej Szumowski

Wypowiedzi

  • Andrzej Szumowski
    Wpis na grupie DELPHI w temacie XML, NextSibling i doNodeAutoIndent. Problem z "pustymi"...
    18.12.2020, 14:55

    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?

Dołącz do GoldenLine

Oferty pracy

Sprawdź aktualne oferty pracy

Aplikuj w łatwy sposób

Aplikuj jednym kliknięciem

Wyślij zaproszenie do