Einzelnen Beitrag anzeigen

MathiasSimmack
(Gast)

n/a Beiträge
 
#7

Re: XML Zugriff auf Datei und schreiben (Knoten Attribute...

  Alt 3. Sep 2003, 10:22
Zitat von chris_82:
Wie mach ich das am besten.
Ist die Frage (hm ... der Satz ) noch von Interesse? Wenn ja, dann hier ein kurzes Beispiel für eine List-View mit 5 Spalten (Reportmodus). Ich gehe davon aus, dass du die XML-Datei bereits geladen hast:
Delphi-Quellcode:
      nl := xmldoc.selectNodes('StockHoldings/Stock');

      if(nl.length > 0) then
        for i := 0 to nl.length - 1 do begin
          li := lv1.Items.Add;

          node := nl.item[i].selectSingleNode('./@exchange');
          if(node <> nil) and (node.Text <> '') then
            li.Caption := node.Text
          else
            li.Caption := 'unbekannt';

          for j := 1 to length(SubNodes) do begin
            node := nl.item[i].selectSingleNode('./' +
              SubNodes[j]);
            if(node <> nil) and (node.Text <> '') then
              li.SubItems.Add(node.Text)
            else
              li.SubItems.Add('?');
          end;
        end;
Vielleicht noch die Variablen:
Delphi-Quellcode:
const
  SubNodes : array[1..4]of string =
    ('name','price','symbol','shares');
var
  xmldoc : DOMDocument;
  nl : IXMLDOMNodeList;
  node : IXMLDOMNode;
  i,
  j : integer;
  li : TListItem;
Und anders herum (sprich: hinzufügen) geht natürlich auch:
Delphi-Quellcode:
      node := xmldoc.createElement('Stock');
      node.setAttribute('exchange','HEIMLICHE BÖRSE');

      xmldoc.documentElement.appendChild(node);

      snode := xmldoc.createElement('name');
      snode.Text := 'Simmi AG';
      node.appendChild(snode);

      snode := xmldoc.createElement('price');
      snode.Text := '-1';
      node.appendChild(snode);

      snode := xmldoc.createElement('symbol');
      snode.Text := 'SAG';
      node.appendChild(snode);

      snode := xmldoc.createElement('shares');
      snode.Text := 'alle Ordner auf Laufwerk C: ;o)';
      snode.setAttribute('type','preferred');
      node.appendChild(snode);


      ShowMessage(xmldoc.xml);
Auch hier noch die Variablen (und der Hinweis, dass du die XML-Datei vorher natürlich laden musst!)
Delphi-Quellcode:
var
  node,
  snode : IXMLDOMElement;
@Chakotay: Es sagt ja niemand, dass es in deinem Tutorial nur um den Movie Organizer gehen soll. Oder du denkst dir halt noch was aus, wo Attribute reinpassen könnten.

Gruß.
  Mit Zitat antworten Zitat