AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

unbekannte Knoten auslesen

Ein Thema von zsoerenm · begonnen am 13. Mai 2007 · letzter Beitrag vom 13. Mai 2007
Antwort Antwort
zsoerenm

Registriert seit: 13. Mai 2007
2 Beiträge
 
Delphi 7 Enterprise
 
#1

unbekannte Knoten auslesen

  Alt 13. Mai 2007, 12:21
Hallo

Ich bin noch ein Anfänger im bereich des Programmierens.

Ich hab mir das Tutorial von Christopher Harms zu MSXML durchgelesen.
In seinem Beispiel zum auslesen eines XML Dokuments schreibt er dies:

Delphi-Quellcode:
procedure TMainForm.UpdateList;
const
NAMES: array[0..8] of string = ('name', 'format', 'ton', 'anzmedien',
'bildqualitaet', 'tonqualitaet', 'gesamt',
'verliehen', 'comment'); // siehe I
var
movies: IXMLDOMNodeList; // wird alle Filme (die Pakete) enthalten
subNode: IXMLDOMNode; // enthält eine Node
i, j: integer; // Laufvariablen
begin
MovieList.Items.Clear; // leeren der MovieList
MovieList.Items.BeginUpdate;
movies := xmlDoc.documentElement.selectNodes('movie'); // siehe II
for i:=0 to movies.length – 1 do begin
subNode := movies.item[i].selectSingleNode('id'); // siehe III
MovieList.Items.Add;
MovieList.Items[i].Caption := subNode.Text; // siehe IV
with MovieList.Items[i].SubItems do begin
for j:=0 to length(NAMES)-1 do begin // siehe V
subNode := movies.item[i].selectSingleNode(NAMES[j]); // -"- -"-
if subNode <> nil then // siehe VI
Add(subNode.Text) // -"- -"-
else
Add('');
end;
end;
end;
MovieList.Items.EndUpdate;
end;
In dem Array NAMES schreibt er alle namen der Knoten rein.
Mein Problem ist, dass ich die aber nicht kenne, da es bei meinem xml dokument verschieden viele Knoten sein können.
Kann man irgendwie auslesen wieviel Knoten vorhanden sind und welche Namen die haben?

Hoffe ihr versteht mich.
Gruß Sören
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: unbekannte Knoten auslesen

  Alt 13. Mai 2007, 13:03
Herzlich willkommen in der Delphi-PRAXiS, Sören.

documentElement.childNodes ist auch eine NodeList und mit der kannst du arbeiten ohne die Namen der SubNodes zu kennen. Ein Blick in die Referenz zum Interface IXMLDOMNode zeigt dir die nötigen Informationen und auch im XML-Forum der DP findest du jede Menge Code.

Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
zsoerenm

Registriert seit: 13. Mai 2007
2 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: unbekannte Knoten auslesen

  Alt 13. Mai 2007, 15:10
Vielen dank schon mal...

ich hab nun ein weiteres Problem:
Christopher Harms benutzt dieses xml Document als beispiel:
XML-Code:
<?xml version=“1.0“ encoding=“ISO-8859-1“?>
<movieorganizer>
   <movie>
      <id>1</id>
      <name>Der Schuh des Manitu</name>
      <format>DVD</format>
      <ton>DD5.1</ton>
      <anzmedien>2</anzmedien>
      <bildqualitaet>1+</bildqualitaet>
      <tonqualitaet>1</tonqualitaet>
      <gesamt>1+</gesamt>
      <verliehen>lol</verliehen>
      <comment>Lustige Komoedie mit Bully.</comment>
      <screenshot />
   </movie>
</movieorganizer>
und Hiermit schaut er ob alles korrekt ist:
Delphi-Quellcode:
fAppPath := ExtractFilePath(Application.ExeName);
xmlDoc := CoDOMDocument40.Create;
xmlDoc.setProperty('NewParser', true);
IF NOT FileExists(fAppPath + DATABASE_FNAME) THEN begin
  xmlDoc.loadXML('<?xml version="1.0"?><movieorganizer></movieorganizer>');
end else
  xmlDoc.load(fAppPath + DATABASE_FNAME);
if xmlDoc.parseError.errorCode <> 0 then begin
  MessageDlg('Die XML-Datei ist nicht korrekt!' + #13#10
  +'Der MovieOrganizer wird nun beendet.',
  mtError, [mbOK], 0);
  Application.Terminate;
end;
ich hab genau wie im tutotial MSXML2_TLB zu den uses hinzugefügt und xmldoc auf den Typ IXMLDOMDocument2 gesetzt.

Dennoch bekomm ich immer die Fehlermeldung, dass die XML-Datei nicht korrekt ist...
Was mach ich falsch?
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: unbekannte Knoten auslesen

  Alt 13. Mai 2007, 16:26
Hallo Sören,

du musst auf die Feinheiten achten - deine Quotes in der XML-Deklaration sind die falschen.

Übrigens: Wenn du eine XML-Datei in deinem Browser öffnest, dann erhältst du einen ziemlich genauen Hinweis darauf was nicht stimmt.

So muss es aussehen:

 <?xml version="1.0" encoding="ISO-8859-1"?> Vermutlich hast du das XML-Dokument mit Word oder einem anderen Textverarbeitungsprogramm angefasst, wobei die straight quotes zu typografischen Anführungszeichen gewandelt wurden.

Freundliche Grüße
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:09 Uhr.
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