Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi XML Zugriff auf Datei und schreiben (Knoten Attribute...) (https://www.delphipraxis.net/8020-xml-zugriff-auf-datei-und-schreiben-knoten-attribute.html)

chris_82 27. Aug 2003 08:19


XML Zugriff auf Datei und schreiben (Knoten Attribute...)
 
Code:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<StockHoldings>
   ***<Stock exchange="NASDAQ">
      ******<name>Borland</name>
      ******<price>15.375</price>
      ******<symbol>BORL</symbol>
      ******<shares>100</shares>
   ***</Stock>
   ***<Stock exchange="NYSE">
      ******<name>Pfizer</name>
      **** *<price>42.75</price>
      ******<symbol>PFE</symbol>
      ******<shares type="preferred">25</shares>

   ***</Stock>
</StockHoldings
Das ist ein Beispielcode aus der Delphi hilfe, komme irgendwie nicht klar damit...was reinzuschreiben oder auszulesen...muss ganze teile eines xml dokuments auslesen und in ein anderes einfügen, dabei muss ich noch die tags ändern bzw eine andere struktur zuweisen.

Wie mach ich das am besten.

hab es zwar geschafft etwas reinzuschreiben oder auch auszulesen, nur nicht an den stellen wo ich wollte, benutze den parser msxml und versuch über das documentelement objekt an die knoden und kinder hernazukommen.
Mir wär sicher erst mal geholfen wenn ich mal n beispielcode für obiges bsp hätte wie ich das die knoten und attribute, texte auslese oder welche einfüge.

chris_82 27. Aug 2003 08:45

ersten Erfolg zu vermelden!
 
OK, auf den ersten Knoten "StockHoldings" kann ich zugreifen, auf den zweiten "Stock" auch, aber wie greif ich auf die weiteren und auf die attribute zu?

Sanchez 3. Sep 2003 07:08

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

bei den Tutorials gibts ein XML-Tut, das sollte dir helfen.
Das mit den Attributen findest dort nicht. Das versuche ich auch grad rauszufinden.

grüße, daniel

chris_82 3. Sep 2003 08:24

Re: XML Zugriff auf Datei und schreiben (Knoten Attribute...
 
Hiermit kannst du dir den Wert des Attributs Attributname auslesen:

Delphi-Quellcode:
.AttributeNodes['Attributname'].Text
damit kannst du den Wert eines Attributs ändern bzw es neu anlegen und gleich mit nem Wert versehen:

Delphi-Quellcode:
.Attributes['Attributname']

MathiasSimmack 3. Sep 2003 08:37

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

Zitat von Sanchez0815
bei den Tutorials gibts ein XML-Tut, das sollte dir helfen.
Das mit den Attributen findest dort nicht. Das versuche ich auch grad rauszufinden.

Ich schätze mal, da schreibt der Chakotay dran ... :) ... oder ihr müsst ihm sagen, dass er dazu was schreiben soll. :wink:

CalganX 3. Sep 2003 09:07

Re: XML Zugriff auf Datei und schreiben (Knoten Attribute...
 
Hi,
Beitrag gelesen und zur Kenntnis genommen. ;)

Chris

PS: Mir fehlen nur noch Gründe warum man Attribute verwenden soll... :twisted:

MathiasSimmack 3. Sep 2003 09:22

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

Zitat von chris_82
Wie mach ich das am besten.

Ist die Frage (hm ... der Satz :wink:) 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ß.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:26 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz