Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Brauche Hilfe bei XML-Datei (https://www.delphipraxis.net/189433-brauche-hilfe-bei-xml-datei.html)

verkouter 11. Jun 2016 22:20

Brauche Hilfe bei XML-Datei
 
Ein Messgerät auf Arbeit liefert nach einer Messung eine Zip-Datei, in der eine XML-Datei gespeichert wird.
Code:
<Pile>
<Event name="RecordStart" pos="0" date="2016-06-08T18:02:59" data=""/>
<Config name="NameDLG" value="Dialog 88"/>
<Config name="VersionDLG" value="4.9.08"/>
<Config name="Firm" value="Test"/>
<Config name="Proc" value="SMX"/>
<Config name="Rec" value="REC0"/>
<Config name="JobSite" value="Testbaustelle"/>
<Config name="Contract" value="B1-B3"/>
<Config name="Rig" value="M1"/>
<Config name="Name1" value="R44S11"/>
<Config name="Name2" value=""/>
<Config name="Restart" value="0"/>
<Env name="Inclination" value="-0.00119055328173877;-0.00225370213759822"/>
<Env name="MachineLocation" value="Right"/>
&#65279;<Descript>
<Trigger>
<AffectTrig>TNTMN0</AffectTrig>
<Function>D+-</Function>
<Value>10.000000</Value>
<ID Size="4">2147483755</ID>
<NbParam Size="4">18</NbParam>
<Measure SizeInfo="2" SizeValue="8"/>
<Affect>SNTRN0</Affect>
<Affect>SNTMN0</Affect>
<Affect>SDBNN0</Affect>
<Affect>SDSNA0</Affect>
<Affect>SRPNN0</Affect>
<Affect>STPPN0</Affect>
<Affect>STPTN0</Affect>
<Affect>SRBNR0</Affect>
<Affect>SRBNS0</Affect>
<Affect>SRSNN0</Affect>
<Affect>SGPNN0</Affect>
<Affect>SGVNR0</Affect>
<Affect>SGVNS0</Affect>
<Affect>SGSNN0</Affect>
<Affect>SIBXN0</Affect>
<Affect>SIBYN0</Affect>
<Affect>SRFNN0</Affect>
<Affect>SROGN0</Affect>
</Trigger>
<Trigger>
<AffectTrig>TDBMN0</AffectTrig>
<Function>D+-</Function>
<Value>0.04</Value>
<ID Size="4">2147483774</ID>
<NbParam Size="4">18</NbParam>
<Measure SizeInfo="2" SizeValue="8"/>
<Affect>SNTRN0</Affect>
<Affect>SNTMN0</Affect>
<Affect>SDBNN0</Affect>
<Affect>SDSNA0</Affect>
<Affect>SRPNN0</Affect>
<Affect>STPPN0</Affect>
<Affect>STPTN0</Affect>
<Affect>SRBNR0</Affect>
<Affect>SRBNS0</Affect>
<Affect>SRSNN0</Affect>
<Affect>SGPNN0</Affect>
<Affect>SGVNR0</Affect>
<Affect>SGVNS0</Affect>
<Affect>SGSNN0</Affect>
<Affect>SIBXN0</Affect>
<Affect>SIBYN0</Affect>
<Affect>SRFNN0</Affect>
<Affect>SROGN0</Affect>
</Trigger>
</Descript>
<Event name="SetVal" pos="376" date="2016-06-08T18:02:59" data="SGVNR0:0
SGVNS0:0
SRBNR0:0
SRBNS0:0
"/>
<Event name="PhaseStart" pos="752" date="2016-06-08T18:02:59" data="0"/>
<Event name="MeasureDStart" pos="1128" date="2016-06-08T18:03:04" data=""/>
<Event name="MeasureDStop" pos="48692" date="2016-06-08T18:06:38" data=""/>
<Event name="PhaseStop" pos="49068" date="2016-06-08T18:06:38" data="0"/>
<Event name="RecordStop" pos="49444" date="2016-06-08T18:06:39" data=""/>
<Config name="ID" value="00364_R44S11_2016-06-08T18+02+58"/>
</Pile>
Wenn man sich am Messgerät vertippt hat, kann man den Namen der Messung nicht mehr ändern, auch das Auswerteprogramm am PC bietet keine Umbennenen-Funktion.

Ich wollte ein Programm schreiben, in dem man die Messdaten in Edits einliest, ändern kann und dann wieder als XML speichert. Nur leider habe ich keine Ahnung von XML. Alle Versuche haben nicht funktioniert.
Wichtig wäre der Eintrag
<Config name="Name1" value="R44S11"/>

hoika 11. Jun 2016 22:29

AW: Brauche Hilfe bei XML-Datei
 
Hallo,
wie wäre es, einfach ne TStringList zu nehmen ?


Heiko

verkouter 12. Jun 2016 09:44

AW: Brauche Hilfe bei XML-Datei
 
Nein, ich muss mit den XML Knoten arbeiten, weil bei einem 2. Messgerät der Aufbau, der XML anders aufgebaut ist(andere Version), der Knoten aber gleich heißt.

vagtler 12. Jun 2016 09:51

AW: Brauche Hilfe bei XML-Datei
 
Wie sehen denn Deine Versuche aus? Oder möchtest Du eine fertige Lösung? Dann wäre "Jobs" vielleicht die richtige Kategorie.

BUG 12. Jun 2016 10:14

AW: Brauche Hilfe bei XML-Datei
 
Zitat:

Zitat von vagtler (Beitrag 1339963)
Oder möchtest Du eine fertige Lösung? Dann wäre "Jobs" vielleicht die richtige Kategorie.

Das wirkt vielleicht doch etwas schroff auf jemand, der nur auf der Suche nach einem XML-Tutorial ist.

Es ist bei XML meist eine gute Idee, nicht per Hand darin rumzufummeln. Wenn du mit MSXML Probleme hast, findest du im Forum auch noch andere Alternativen.

verkouter 12. Jun 2016 11:34

AW: Brauche Hilfe bei XML-Datei
 
Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
 var
  xmlDoc : IXMLDocument;
begin
if opendialog1.Execute then
begin
  xmlDoc := newXMLDocument;
  xmlDoc.LoadFromFile(opendialog1.FileName);
  xmlDoc.Active := true;
  edit1.Text:=xmlDoc.DocumentElement.ChildNodes.FindNode('Config').ChildNodes['Name1'].Attributes['value'];
end;
end;
Bekomme immer eine Fehlermeldung "Variante des Typs(Null) konnte nicht in Typ (Olestr) konvertiert werden.

DeddyH 12. Jun 2016 11:53

AW: Brauche Hilfe bei XML-Datei
 
Hier einmal eine Langversion:
Delphi-Quellcode:
uses XMLDoc, XMLIntf;

procedure TForm1.Button1Click(Sender: TObject);
var
  Doc: IXMLDocument;
  Node: IXMLNode;
  Name1: string;
begin
  Name1 := '';
  Doc := TXMLDocument.Create(nil);
  Doc.LoadFromFile(...); //Dateiname hier einsetzen
  Doc.Active := true;
  Node := Doc.DocumentElement.ChildNodes.FindNode('Config');
  while Assigned(Node) do
    begin
      if Node.HasAttribute('name') then
        if Node.Attributes['name'] = 'Name1' then
          if Node.HasAttribute('value') then
            begin
              Name1 := Node.Attributes['value'];
              break;
            end;
      Node := Node.NextSibling;
    end;
  ShowMessage(Name1);
end;

verkouter 12. Jun 2016 12:12

AW: Brauche Hilfe bei XML-Datei
 
Danke, hat funktioniert.
Da wäre ich nie daraufgekommen.
Also ist "name) und "value" ein Attribut von "Config" ???

DeddyH 12. Jun 2016 12:32

AW: Brauche Hilfe bei XML-Datei
 
Richtig.

himitsu 13. Jun 2016 10:26

AW: Brauche Hilfe bei XML-Datei
 
Wenn Einem
Delphi-Quellcode:
xmlDoc.DocumentElement.ChildNodes.FindNode('Config').ChildNodes['Name1'].Attributes['value']
zu umständlich ist, dann kann er/sie auch gern mit XPath arbeiten.
https://de.wikipedia.org/wiki/XPath
MS-XMLDOC kann das.

Da kann man auch ohne Schleifen und externe Bedingungen direkt im "String" Vieles besser einschränken,
so ala
Delphi-Quellcode:
xmlDoc.DocumentElement.Nodes['Config[@name=Name1]\attribute::value']
, also im ROOT das "Config" mit dem Attribut "name", dessen Wert "Name1" ist, und davon da Attribut "value" auslesen/bearbeiten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:15 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