Einzelnen Beitrag anzeigen

Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#1

einige SubNodes an einen SubNode hängen

  Alt 18. Mai 2010, 10:33
Moin zusammen,

sorry für den Titel aber es ist mir nichts besseres eingefallen.

Ich möchte gerne folgende XML Datei erzeugen.

XML-Code:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<subsubitems>
  <column>
    <item_1>
      <visible>1</visible>
      <position>1</position>
      <width>120</width>
    </item_1>
    <item_2>
      <visible>1</visible>
      <position>1</position>
      <width>120</width>
    </item_2>
  </column>
</subsubitems>
Leider gelingt es mir nicht. Ich bekomme nur folgende Struktur hin.

XML-Code:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<subsubitems>
  <column>
    <item_1>
      <visible>1</visible>
      <position>1</position>
      <width>120</width>
    </item_1>
  </column>
  <column>
    <item_2>
      <visible>1</visible>
      <position>2</position>
      <width>240</width>
    </item_2>
  </column>
</subsubitems>
Dies ist mein Code.
Delphi-Quellcode:
...
ColumnName := 'item_1';
 xmlNode := xmlDoc.documentElement.selectSingleNode('/subsubitems/columns/'+ColumnName);
 if Assigned(xmlNode) then
 begin
   try
     xmlNode.selectSingleNode('visible').Text := '1';
     xmlNode.selectSingleNode('position').Text := '1';
     xmlNode.selectSingleNode('width').Text := '120';
   except
     //
   end;
 end
 else
 begin
   NewItem := xmlDoc.createElement('column');
   NewItemSub := xmlDoc.createElement(ColumnName);

   NewSub := xmlDoc.createElement('visible');
   NewSub.text := '1';
   NewItemSub.appendChild(NewSub);

   NewSub := xmlDoc.createElement('position');
   NewSub.text := '1';
   NewItemSub.appendChild(NewSub);

   NewSub := xmlDoc.createElement('width');
   NewSub.text := '120';
   NewItemSub.appendChild(NewSub);

   NewItem.appendChild(NewItemSub);
   xmlDoc.documentElement.appendChild(NewItem);
 end;

 ColumnName := 'item_2';
 xmlNode := xmlDoc.documentElement.selectSingleNode('/subsubitems/columns/'+ColumnName);
 if Assigned(xmlNode) then
 begin
   try
     xmlNode.selectSingleNode('visible').Text := '2';
     xmlNode.selectSingleNode('position').Text := '2';
     xmlNode.selectSingleNode('width').Text := '240';
   except
     //
   end;
 end
 else
 begin
   NewItem := xmlDoc.createElement('column');
   NewItemSub := xmlDoc.createElement(ColumnName);

   NewSub := xmlDoc.createElement('visible');
   NewSub.text := '2';
   NewItemSub.appendChild(NewSub);

   NewSub := xmlDoc.createElement('position');
   NewSub.text := '2';
   NewItemSub.appendChild(NewSub);

   NewSub := xmlDoc.createElement('width');
   NewSub.text := '240';
   NewItemSub.appendChild(NewSub);

   NewItem.appendChild(NewItemSub);
   xmlDoc.documentElement.appendChild(NewItem);
 end;

 xmlDoc.save(AppPath + XML_FNAME);
Wie muss ich meinen Code ändern, dass ich die 1. Struktur bekomme? Ich habe schon ne Menge probiert aber leider ohne Erfolg.

Vielen Dank im voraus.

Sven
  Mit Zitat antworten Zitat