AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi JvSimpleXML - Value für Namen und entsprechende Property
Thema durchsuchen
Ansicht
Themen-Optionen

JvSimpleXML - Value für Namen und entsprechende Property

Ein Thema von Marco.Fischer · begonnen am 8. Feb 2009 · letzter Beitrag vom 10. Feb 2009
Antwort Antwort
Marco.Fischer

Registriert seit: 8. Feb 2009
30 Beiträge
 
#1

JvSimpleXML - Value für Namen und entsprechende Property

  Alt 8. Feb 2009, 21:29
Hallo,
ich habe folgende XML-Struktur:

...
<column>
<type>string</type>
<name lang="de">Seite</name>
<name lang="en">page</name>
<help lang="de">Deutsche Hilfe</help>
<help lang="en">English help</help>
</column>
...

Kann ich ohne Schleife gezielt auf den Value von z.B. <name lang="en">page</name> zugreifen und wenn ja, wie?

Danke für jede Hilfe.

Marco.
  Mit Zitat antworten Zitat
HalloDu

Registriert seit: 24. Apr 2006
Ort: Oelde
267 Beiträge
 
Delphi 2009 Professional
 
#2

Re: JvSimpleXML - Value für Namen und entsprechende Property

  Alt 8. Feb 2009, 21:54
Hallo Marco,

ich weiß nicht ob JvSimpleXML das kann, aber für einen solchen Zugriff wäre XPath das richtige Stichwort.

Hoffe geholfen zu haben,
Frederic
Frederic H.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.297 Beiträge
 
Delphi 12 Athens
 
#3

Re: JvSimpleXML - Value für Namen und entsprechende Property

  Alt 9. Feb 2009, 05:00
Hallo,

JvSimpleXML kann das. Du kannst den Value eines Eintrags sowohl über den Index des Items als auch über den Namen des Items ermitteln.
Je nach Stuktur mußt du mit den Items etwas experimentieren um den richtigen "Level" (bei dir 'type') zu kriegen.

könnte so aussehen:
JvSimpleXML.Root.Items.ItemNamed['bla'].Value
oder so:
JvSimpleXML.Root.Items.Item[0].Items.Item[1].Items.Item[1].Items.ItemNamed['bla'].Value

...so in der Art, je nach Struktur deiner XML. Mußt du ein wenig selbst experimentieren.

  Mit Zitat antworten Zitat
Marco.Fischer

Registriert seit: 8. Feb 2009
30 Beiträge
 
#4

Re: JvSimpleXML - Value für Namen und entsprechende Property

  Alt 9. Feb 2009, 07:00
Hallo,

@haentschman

Danke für die Antwort. Ich verwende die Strukturen, die Du angegeben hast, bereits erfolgreich. Den Value von type kann ich problemlos ermitteln, aber wie soll dies für "<help lang="en">" funktionieren? Sowohl "<help lang="de">" als auch "<help lang="en">" haben ja als Key "help". Ich bräuchte also als eine Art "erweiterter" Key, z.B. "help@lang='de'"). Bei XPath verwendet man z.B. den Operator @ dafür.

Gruß
Marco.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.297 Beiträge
 
Delphi 12 Athens
 
#5

Re: JvSimpleXML - Value für Namen und entsprechende Property

  Alt 9. Feb 2009, 16:18
Hallo Marco,

war wohl noch ein wenig früh heut morgen
Ich schau mal, ob ich heut Abend vieleicht noch eine Lösung zusammenexperimentieren kann.
Die XML Struktur ist vom Root her wie in deinem Beispiel ?

bis später.

Lösungsvorschlag:
Delphi-Quellcode:
function TForm1.GetXMLValue(NodeName, NodeProperty: String): String;
var I: Integer;
begin
  Result:= '';
  for I := 1 to JvSimpleXML1.Root.Items.Count-1 do
    begin
      if (JvSimpleXML1.Root.Items.Item[I].Name = NodeName) and
         (JvSimpleXML1.Root.Items.Item[I].Properties.Value('lang') = NodeProperty) then
            Result:= JvSimpleXML1.Root.Items.Item[I].Value;
    end;
end;
Aufruf z.B.:

GetXMLValue('help','de') ergibt nach deinem Beispiel als Rückgabewert "Deutsche Hilfe"
GetXMLValue('name','de') ergibt nach deinem Beispiel als Rückgabewert "Seite"
GetXMLValue('help','en') ergibt nach deinem Beispiel als Rückgabewert "English help"

hoffe du kommst jetzt weiter.
  Mit Zitat antworten Zitat
Marco.Fischer

Registriert seit: 8. Feb 2009
30 Beiträge
 
#6

Re: JvSimpleXML - Value für Namen und entsprechende Property

  Alt 10. Feb 2009, 20:40
Hallo haentschman,

mit diesem Ansatz klappt es jetzt. Vielen Dank.

Aber wahrscheinlich ist der vorgeschlagene XPath-Ansatz konsequenter, weil man damit auf die Schleife verzichten kann. Ich werde mir demnächst XPath mal näher betrachten. OpenXML kann dies wohl.

Gruß,
Marco.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.297 Beiträge
 
Delphi 12 Athens
 
#7

Re: JvSimpleXML - Value für Namen und entsprechende Property

  Alt 10. Feb 2009, 21:23
Hallo,

Zitat:
Aber wahrscheinlich ist der vorgeschlagene XPath-Ansatz konsequenter, weil man damit auf die Schleife verzichten kann. Ich werde mir demnächst XPath mal näher betrachten. OpenXML kann dies wohl.
...die werden das intern wahrscheinlich auch nicht anders lösen da XML textbasiert ist .

...jedenfalls waren alle Versuche mit "ItemNamed" in Abhängigkeit von der Property erfolglos. so blieb nur diese Variante.

  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 10:04 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