Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  TM - Plant Simulation
  xml Zugriff - xpath

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  xml Zugriff - xpath (1438 mal gelesen)
h4wk
Mitglied



Sehen Sie sich das Profil von h4wk an!   Senden Sie eine Private Message an h4wk  Schreiben Sie einen Gästebucheintrag für h4wk

Beiträge: 15
Registriert: 20.02.2014

erstellt am: 28. Feb. 2014 15:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo liebe Community,
ich habe ein kleines Problem, denke aber, dass es für die meisten hier sehr schnell zu lösen ist.

Könntet Ihr mir verraten, wie man auf die Fett/Kursiv geschriebenen Elemente im Folgenden XML-File per XPath zugreifen kann?

ich hätte gedacht das es irgendwie so gehen sollte:
print XMLSchnittstelle.holeKnoten("dataExport");
(XMLSchnittstelle ist meine XML Schnittstelle mit der Verknüpfung auf mein XML-File)

<?xml version="1.0" encoding="UTF-8"?>
<dataExport id="1337" >
  <measurements>
      <measurement id="1" name="MessungEins">
        <description>MeineErsteBeschreibung</description>
        <measurevalues>
            <val id="1" normtime="2010-01-01 00:15:00" value="500"/>
            <val id="1" normtime="2010-01-01 00:17:00" value="700"/>
        </measurevalues>
      </measurement>
      <measurement id="2" name="MessungZwei">
        <description>MeineZweiteBeschreibung</description>
        <measurevalues>
            <val id="2" normtime="2010-01-01 00:18:00" value="800"/>
            <val id="2" normtime="2010-01-01 00:19:00" value="900"/>
        </measurevalues>
      </measurement>
  </measurements>
</dataExport>


Danke für die Hilfe

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Bon Simul
Mitglied
Simulant


Sehen Sie sich das Profil von Bon Simul an!   Senden Sie eine Private Message an Bon Simul  Schreiben Sie einen Gästebucheintrag für Bon Simul

Beiträge: 1250
Registriert: 08.08.2011

Plant Simulation 10.1, 11 ff Professional

erstellt am: 02. Mrz. 2014 23:52    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für h4wk 10 Unities + Antwort hilfreich

zunächst: holeKnoten gibt die Werte als table zurück, um Ihre description auszulesen, müsste das wie folgt aussehen:
Code:

is
  tbl:table;
do
  XMLSchnittstelle.öffneDokument;
  -- hole knoten gibt eine tabelle zurück
  tbl:=XMLSchnittstelle.holeKnoten("/dataExport/measurements/measurement[@id='1']/description",1); 
  XMLSchnittstelle.schließen;
  --mach was mit der tabelle 
end;

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

h4wk
Mitglied



Sehen Sie sich das Profil von h4wk an!   Senden Sie eine Private Message an h4wk  Schreiben Sie einen Gästebucheintrag für h4wk

Beiträge: 15
Registriert: 20.02.2014

erstellt am: 03. Mrz. 2014 08:23    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke für die Antwort. Das hilft mir schon weiter 
Eine Frage hätte ich jedoch noch. Wie genau kann ich zum Beispiel den namen aus einem solchen Element lesen?

<measurement id="1" name="MessungEins">

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Bon Simul
Mitglied
Simulant


Sehen Sie sich das Profil von Bon Simul an!   Senden Sie eine Private Message an Bon Simul  Schreiben Sie einen Gästebucheintrag für Bon Simul

Beiträge: 1250
Registriert: 08.08.2011

Plant Simulation 10.1, 11 ff Professional

erstellt am: 03. Mrz. 2014 08:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für h4wk 10 Unities + Antwort hilfreich

das ist eine Ebene höher:
Code:

XMLSchnittstelle.holeKnoten("/dataExport/measurements/measurement[@id='1']",1)


Die Attribute stehen dann in der Subtabelle attribute.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

h4wk
Mitglied



Sehen Sie sich das Profil von h4wk an!   Senden Sie eine Private Message an h4wk  Schreiben Sie einen Gästebucheintrag für h4wk

Beiträge: 15
Registriert: 20.02.2014

erstellt am: 03. Mrz. 2014 09:43    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke. Sry wenn ich mich so dumm stelle. aber ich schaffe es nicht die Subtabelle zu öffnen. 
Wie könnte ich den Wert auf der Konsole ausgeben?

Danke 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Bon Simul
Mitglied
Simulant


Sehen Sie sich das Profil von Bon Simul an!   Senden Sie eine Private Message an Bon Simul  Schreiben Sie einen Gästebucheintrag für Bon Simul

Beiträge: 1250
Registriert: 08.08.2011

Plant Simulation 10.1, 11 ff Professional

erstellt am: 03. Mrz. 2014 09:49    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für h4wk 10 Unities + Antwort hilfreich

Sie können mit <tabelle>.öffneDialog die Tabelle anzeigen lassen. In die Untertabelle kommen Sie mit einem weiteren Paar eckiger Klammern:
Code:

is
  tbl:table;
do
  XMLSchnittstelle.öffneDokument;
  -- hole knoten gibt eine tabelle zurück
  tbl:=XMLSchnittstelle.holeKnoten("/dataExport/measurements/measurement[@id='1']",1); 
  XMLSchnittstelle.schließen;
  --tabelle öffnen
  tbl.öffneDialog;
  --name in Konsole schreiben
  print tbl[4,1][2,2]; 
end;



Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

h4wk
Mitglied



Sehen Sie sich das Profil von h4wk an!   Senden Sie eine Private Message an h4wk  Schreiben Sie einen Gästebucheintrag für h4wk

Beiträge: 15
Registriert: 20.02.2014

erstellt am: 03. Mrz. 2014 11:56    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

h4wk
Mitglied



Sehen Sie sich das Profil von h4wk an!   Senden Sie eine Private Message an h4wk  Schreiben Sie einen Gästebucheintrag für h4wk

Beiträge: 15
Registriert: 20.02.2014

erstellt am: 03. Mrz. 2014 16:11    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo. ich bins nochmal

Ich würde gerne die "id" jeder Messung erfassen.
Mein Problem dabei ist nicht das auslesen (das wurde ja bereits gut erklärt) sondern der Umgang mit beliebig vielen Messungen.

Im Moment lese ich die zwei Messungen so aus:

Code:

is
tbl:table;
zeile,spalte,anzahlMeldungen:Integer;
do
anzahlMeldungen:=2 --Dieser Wert müsste abgefragt werden
        zeile:=1;
while zeile<(anzahlMeldungen + 1) loop
XMLSchnittstelle1.öffneDokument;
tbl := XMLschnittstelle1.holeknoten("/dataExport/measurements/measurement",1);
tbl.schliesseDialog;

                --Ausgabe der "id" auf der Kommandozeile
print "Messung Nr.: " , zeile , " id=" , tbl[4,zeile][2,1]; --hier liegt "id"

zeile := zeile + 1;
end;
end;


Gibt es eine Möglichkeit um die Anzahl der Messungen ("measurement") auszulesen?
Danke für die tolle Hilfe

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Bon Simul
Mitglied
Simulant


Sehen Sie sich das Profil von Bon Simul an!   Senden Sie eine Private Message an Bon Simul  Schreiben Sie einen Gästebucheintrag für Bon Simul

Beiträge: 1250
Registriert: 08.08.2011

Plant Simulation 10.1, 11 ff Professional

erstellt am: 03. Mrz. 2014 16:41    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für h4wk 10 Unities + Antwort hilfreich

normalerweise holen Sie sich alles, was Sie interessiert aus der XML-Datei (in einen Datenauszug). Und dann arbeiten Sie mit der Ergebnistabelle weiter. So können Sie z.B. alle Attribute der measurements-Elemente auslesen (nur eine Ebene nach unten).
Das würde dann so aussehen, um alle id's auszulesen:
Code:

is
tbl:table;
anzahl:integer;
i:integer;
do
  XMLSchnittstelle.öffneDokument;
  -- hole knoten gibt eine tabelle zurück
  tbl:=XMLSchnittstelle.holeKnoten("/dataExport/measurements",1);
  XMLSchnittstelle.schließen;
  --anzahl aus tabelle ermitteln
  anzahl:=tbl[5,1].yDim;
  --die ids stehen jeweils in der Zelle [2,1] in der Attribute-Tabelle (Spalte 4)
  for i:=1 to anzahl loop
  print tbl[5,1][4,i][2,1];
  next; 
end;


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

h4wk
Mitglied



Sehen Sie sich das Profil von h4wk an!   Senden Sie eine Private Message an h4wk  Schreiben Sie einen Gästebucheintrag für h4wk

Beiträge: 15
Registriert: 20.02.2014

erstellt am: 04. Mrz. 2014 08:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke das hat mir wirklich geholfen 


Nun hoffentlich die letzte Frage:

Anscheinend ist in "tbl[5,1]" die Anzahl an Unterelementen gespeichert.
Ich finde einfach keine Dokumentation, wo ich solche Informationen nachlesen kann. Gibt es da vielleicht was?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Bon Simul
Mitglied
Simulant


Sehen Sie sich das Profil von Bon Simul an!   Senden Sie eine Private Message an Bon Simul  Schreiben Sie einen Gästebucheintrag für Bon Simul

Beiträge: 1250
Registriert: 08.08.2011

Plant Simulation 10.1, 11 ff Professional

erstellt am: 04. Mrz. 2014 09:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für h4wk 10 Unities + Antwort hilfreich

am Besten ist, wenn Sie in der Zeile nach dem holeKnoten-Befehl einen Haltepunkt in der Methode setzen. Wenn Sie die Methode ausführen und der Debugger öffnet sich an dem Haltepunkt, klicken Sie dann mit der rechten Maustaste auf die Tabellenvariable. Sie können dann über das Kontextmenü sich die Tabelle in einem Editor anzeigen lassen.

Die XML-Schnittstelle benutzt einen Container zum Datenaustausch (die Struktur mit den Untertabellen). In der Hilfe ist der Container nicht dokumentiert, wenn Sie sich die Tabelle ansehen, bekommen Sie aber heraus, wo was steht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

h4wk
Mitglied



Sehen Sie sich das Profil von h4wk an!   Senden Sie eine Private Message an h4wk  Schreiben Sie einen Gästebucheintrag für h4wk

Beiträge: 15
Registriert: 20.02.2014

erstellt am: 04. Mrz. 2014 09:44    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Funktioniert Super. Danke für die Hilfe. Ohne das Forum hätte ich das nie so gut gelernt. Besten Dank 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz