Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi XML Document nach betimmten Knoten/Attributen durchsuchen (https://www.delphipraxis.net/8256-xml-document-nach-betimmten-knoten-attributen-durchsuchen.html)

chris_82 1. Sep 2003 08:55


XML Document nach betimmten Knoten/Attributen durchsuchen
 
Wie durchsuche ich ein XML Dokument nach bestimmen Knoten bzw Attributen in einem bestimmten Knoten und greife auf diesen zu. Wie kann ich den Wert dieser Attribute in einer Listbox darstellen?

benutze: MSXML

CalganX 1. Sep 2003 09:09

Re: XML Document nach betimmten Knoten/Attributen durchsuche
 
Hi chris_82,
dazu nutzt du die XSL. Damit kannst du gezielt nach Nodes suchen. Wenn du nach einfachen Nodes nach dem Textinhalt suchen willst dann reicht das hier z.B.:
Code:
/rootElement/Node[subNode="Mein Text der subNode"]
Um nach Attributen zu suchen würde folgendes Beispiel funktionieren:
Code:
/rootElement/Node/SubNode[@attr="AttrValue"]
Diese XSL (am besten in Variable speichern) nutzt du dann beim verwenden von selectSingleNode bzw. selectNodes.

Ich hoffe, ich habe keinen Fehler gemacht und dass alles funktioniert!

Chris

chris_82 1. Sep 2003 10:01

Re: XML Document nach betimmten Knoten/Attributen durchsuche
 
XSL??

bin ein absoluter beginner in sachen xml und delphi,

kann man nciht einfach irgendwie über xmldocumetn auf einen bestimmten knoten zugreifen?

CalganX 1. Sep 2003 10:10

Re: XML Document nach betimmten Knoten/Attributen durchsuche
 
Doch. Das XSL ist eigentlich sowas wie eine SQL-Query. Also nur ein String. ;)
Delphi-Quellcode:
var
  xsl: string;
{...}
xsl := '/Die/Obige/XSL[name="value"]'; // das was da oben steht;

xmlDoc.documentElement.selectSingleNode(xsl);
Chris

Sanchez 3. Sep 2003 07:13

Re: XML Document nach betimmten Knoten/Attributen durchsuche
 
Zitat:

Zitat von Chakotay1308
Hi chris_82,
Code:
/rootElement/Node[subNode="Mein Text der subNode"]
Um nach Attributen zu suchen würde folgendes Beispiel funktionieren:
Code:
/rootElement/Node/SubNode[@attr="AttrValue"]

Mal ne Frage:

Damit beide Abfragen was zurückliefern muss das XML-Dok so aussehen?

Code:
  <rootelement>
    <Node>
      <subNode attr="AttrValue">Mein Text der subNode</subNode>
    </Node>
  </rootelement>
Die erste Abfrage ist klar. Mir gehts hier um die Attribute.
Müssen vielleicht alle subNode - Tags das attr-Attribut besitzen???

grüße, daniel

CalganX 3. Sep 2003 09:04

Re: XML Document nach betimmten Knoten/Attributen durchsuche
 
Hi,
nein, müssen nicht. Außer du definierst es so in der DTD.

Chris

MathiasSimmack 3. Sep 2003 09:19

Re: XML Document nach betimmten Knoten/Attributen durchsuche
 
Als Ergänzung: zurückgeliefert werden dann eben nur die Knoten, die das Attribut haben.

Sanchez 3. Sep 2003 09:34

Re: XML Document nach betimmten Knoten/Attributen durchsuche
 
So möchte ich es ja haben. Ich bekomme nämlich nix zurück.

Mein xml-File sieht so aus:

Code:
<?xml version="1.0" encoding="iso-8859-1"?>
<werte>
   <eintrag>
      <id>1</id>
      <gasart>202</gasart>
      <geraet>O2</geraet>
      <grenzwert benutzt="ja">99.5</grenzwert>
      <warnwert>99.8</warnwert>
      <toleranz>20</toleranz>
      <einheit>%</einheit>
   </eintrag>
   <eintrag>
      <id>2</id>
      <gasart>201</gasart>
      <geraet>CO</geraet>
      <grenzwert benutzt="nein">0</grenzwert>
      <warnwert>0</warnwert>
      <toleranz>0</toleranz>
      <einheit></einheit>
   </eintrag>
</werte>
Jetzt möchte ich die Knoten haben, bei denen Benutzt gleich ja ist

Delphi-Quellcode:
var eintraege: IXMLDOMNodeList;
    subNode: IXMLDOMNode;
    i : integer;
begin

  eintraege := xmlDoc.documentElement.selectNodes('werte/eintrag/grenzwert[@benutzt="ja"]');

  for i := 0 to eintraege.length - 1 do begin
    ...
  end;
end;
bei mir ist Eintraege.length immer 0, was mach ich falsch?

grüße, daniel

CalganX 3. Sep 2003 10:03

Re: XML Document nach betimmten Knoten/Attributen durchsuche
 
Vor dem werte fehlt ein /. ;)

Chris

MathiasSimmack 3. Sep 2003 10:09

Re: XML Document nach betimmten Knoten/Attributen durchsuche
 
Yo. Weil der Parser durch
Zitat:

Zitat von Sanchez0815
Code:
eintraege := xmlDoc[color=red].documentElement[/color].selectNodes('werte/eintrag/grenzwert[@benutzt="ja"]');

IMHO schon auf dem Knoten "werte" steht und darum nichts findet. Wie Chakotay schon in seinem Tutorial schrieb: immer an das Linux-Dateisystem denken. :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:01 Uhr.
Seite 1 von 2  1 2      

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