AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi XML Parse Error - XPath Fehler bei verschachtelter Struktur
Thema durchsuchen
Ansicht
Themen-Optionen

XML Parse Error - XPath Fehler bei verschachtelter Struktur

Ein Thema von arne99 · begonnen am 8. Dez 2006 · letzter Beitrag vom 12. Dez 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von arne99
arne99

Registriert seit: 11. Jan 2005
Ort: Hamburg
158 Beiträge
 
Turbo Delphi für Win32
 
#1

XML Parse Error - XPath Fehler bei verschachtelter Struktur

  Alt 8. Dez 2006, 15:24
Hallo Leute,

und wieder benötige ich Hilfe:

Ich will folgende Art von XML File auslesen:

XML-Code:
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE config SYSTEM "config-1_0.dtd">

<config>
<client>

<configuration name="name"
ds-name="ProjectDB"
service-url="local"
lfs-cache-path="d:\lfs"
lfs-config-name="Configname" />

<configuration name="name2"
ds-name="ProjectDB2"
service-url="local"
lfs-cache-path="d:\lfs"
lfs-config-name="Configname" />
</client>

...
Ich weiß nicht wie ich configuration tags komplett auslese.
Brauche name, ds-name, service-url, etc.

Wenn ich jedoch versuche es auszulesen erklärt mich BDS für verückt, weil das Start Tag da is, aber ein End Tag fehlt. (nicht passend ...)

Wie könnte ich dennoch diese configuration auslesen, hintereinander.

Danke an Alle!

[edit=sakura] Titel angepasst. Mfg, sakura[/edit]
Arne
// u know? ID Service www.topsta.de
  Mit Zitat antworten Zitat
Benutzerbild von Interceptor
Interceptor

Registriert seit: 28. Mai 2004
Ort: Würzburg
118 Beiträge
 
Delphi 6 Professional
 
#2

Re: XML Node ohne EndTag auslesen (OmniXML)

  Alt 8. Dez 2006, 15:28
jedenfalls nicht mit den standard xml klassen, denn die erwarten imho alle wellformed xml.
bau dir halt ne stringlist und frag dann den entsprechenden wert ab
David
~ Nichts ist wahr, alles ist erlaubt ~
  Mit Zitat antworten Zitat
Benutzerbild von arne99
arne99

Registriert seit: 11. Jan 2005
Ort: Hamburg
158 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: XML Node ohne EndTag auslesen (OmniXML)

  Alt 8. Dez 2006, 15:30
Aber kann man keine INformationen aus der XML auslesen die so gespeichert sind: ???

<configuration
node1="wert1"
node2="wert2"
node3="wert3" />

GEht nicht...gibts nicht?
Arne
// u know? ID Service www.topsta.de
  Mit Zitat antworten Zitat
Sascha L

Registriert seit: 4. Jun 2004
Ort: Hamm
390 Beiträge
 
Delphi 2006 Professional
 
#4

Re: XML Node ohne EndTag auslesen (OmniXML)

  Alt 8. Dez 2006, 15:33
Natürlich geht das, auch mit OmniXML.

<test> </test> und

<test /> sind beide identisch und in Ordnung, da sie konform sind.

Einfach auf die Attribute zugreifen. Welche Fehlermeldungen bekommst du denn genau?
Sascha
  Mit Zitat antworten Zitat
Benutzerbild von Interceptor
Interceptor

Registriert seit: 28. Mai 2004
Ort: Würzburg
118 Beiträge
 
Delphi 6 Professional
 
#5

Re: XML Node ohne EndTag auslesen (OmniXML)

  Alt 8. Dez 2006, 15:36
wie gesagt, bei so einer verkorksten xmlfile wirst du mit XML-Parsern gegen die wand fahrn.
lad dir dein file in nem stream oder ähnlichem und frag die Attribute zeilenweise ab, ne andere lösung fällt mir zumindest nicht ein...

// EDIT:
Oops, ich seh grad dass dein File eigentlich valide sein sollte... ( <endtag /> )
David
~ Nichts ist wahr, alles ist erlaubt ~
  Mit Zitat antworten Zitat
Benutzerbild von arne99
arne99

Registriert seit: 11. Jan 2005
Ort: Hamburg
158 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: XML Node ohne EndTag auslesen (OmniXML)

  Alt 8. Dez 2006, 15:37
Hmm, wie spreche ich das mit OmniXML an? (gibt es fuer OmniXML Tutorials die genau das abfangen?)

Der Fehler: SIehe Anhang
Miniaturansicht angehängter Grafiken
fehler_delphi_726.png  
Arne
// u know? ID Service www.topsta.de
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#7

Re: XML Node ohne EndTag auslesen (OmniXML)

  Alt 8. Dez 2006, 15:41
Hast du dir die Fehlermeldung überhaupt einmal näher angesehen? Du hast uns bis jetzt keine einzige betroffene Zeile gezeigt, da können wir nur Däumchen drehen.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von arne99
arne99

Registriert seit: 11. Jan 2005
Ort: Hamburg
158 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: XML Node ohne EndTag auslesen (OmniXML)

  Alt 8. Dez 2006, 15:44
Angefangen hatte ich so:

Delphi-Quellcode:
begin
  if sopendialog1.Execute then
       begin
       // try
  doc:=createxmldoc;
doc.Load(sOpenDialog1.filename);
 Doc.DocumentElement.SelectNodes('configuration');
slabel1.Caption:= command.Text ;
       end;
Arne
// u know? ID Service www.topsta.de
  Mit Zitat antworten Zitat
Benutzerbild von arne99
arne99

Registriert seit: 11. Jan 2005
Ort: Hamburg
158 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: XML Node ohne EndTag auslesen (OmniXML)

  Alt 12. Dez 2006, 11:25
Ich hab mich mit HIlfe von DP etc selbst weitergebracht, jedoch ist das hier echt kniffelig!

Mein Delphi-Code:
Delphi-Quellcode:
doc: IXMLDOMDocument;
  sName, sValue, xp: String;
  nl: IXMLDOMNodeList;
  iElem, iAttr: Integer;
  e: IXMLDOMElement;

begin


  if sopendialog1.Execute then
       begin


  doc := CoDomDocument.Create;
  doc.async := False;
  if doc.load(sopendialog1.FileName) then
  begin
    xp := 'lago-config/client/configuration';
    nl := doc.selectNodes(xp);
    for iElem := 0 to Pred(nl.length) do
    begin
      e := nl.item[iElem] as IXMLDOMElement;
      ShowMessage('tagname = ' + e.tagName);
      with e.attributes do
      begin
        for iAttr := 0 to Pred(length) do
        begin
          sName := item[iAttr].nodeName;
          sValue := VarToStr(item[iAttr].nodeValue);
          ShowMessage(Format('%s="%s"', [sName, sValue]));
        end;
      end;
    end;
  end else
    ShowMessage(doc.parseError.reason);
end;
end;
Und hier die XML File:
XML-Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<lago-config>
<client>
<configuration name="test" name2="test2" />
<configuration name="test" name2="test2" />
</client>

<server>
<datasource name="test" name2="test2" />
<user name="test" password="test" />
</datasource>
</server>
</lago-config>
Der Parse Error Text lautet jetzt:
Code:
Das Endtag "datasource" stimmt nicht mit dem Startag "server" überein.
Das macht ja auch Sinn! WEil es verschachtelt ist. Könnt ihr mir helfen?

Wie muss ich den XPath ändern, dass ich das abfangen kann?
Anforderung ist nur, dass ich alle Infos rauslesen kann!

Danke im Vorraus!
Arne
// u know? ID Service www.topsta.de
  Mit Zitat antworten Zitat
Benutzerbild von Interceptor
Interceptor

Registriert seit: 28. Mai 2004
Ort: Würzburg
118 Beiträge
 
Delphi 6 Professional
 
#10

Re: XML Parse Error - XPath Fehler bei verschachtelter Struk

  Alt 12. Dez 2006, 11:37
XML-Code:
<datasource name="test" name2="test2" />
<user name="test" password="test" />
</datasource>
Der Fehler liegt entweder in der 1. Zeile, indem du das tag mit "/" schließt...
oder du lässt das </datasource> weg
David
~ Nichts ist wahr, alles ist erlaubt ~
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 12:16 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