![]() |
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:
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.
<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"/> <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> 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"/> |
AW: Brauche Hilfe bei XML-Datei
Hallo,
wie wäre es, einfach ne TStringList zu nehmen ? Heiko |
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.
|
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.
|
AW: Brauche Hilfe bei XML-Datei
Zitat:
![]() 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. |
AW: Brauche Hilfe bei XML-Datei
Delphi-Quellcode:
Bekomme immer eine Fehlermeldung "Variante des Typs(Null) konnte nicht in Typ (Olestr) konvertiert werden.
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; |
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; |
AW: Brauche Hilfe bei XML-Datei
Danke, hat funktioniert.
Da wäre ich nie daraufgekommen. Also ist "name) und "value" ein Attribut von "Config" ??? |
AW: Brauche Hilfe bei XML-Datei
Richtig.
|
AW: Brauche Hilfe bei XML-Datei
Wenn Einem
Delphi-Quellcode:
zu umständlich ist, dann kann er/sie auch gern mit XPath arbeiten.
xmlDoc.DocumentElement.ChildNodes.FindNode('Config').ChildNodes['Name1'].Attributes['value']
![]() MS-XMLDOC kann das. Da kann man auch ohne Schleifen und externe Bedingungen direkt im "String" Vieles besser einschränken, so ala
Delphi-Quellcode:
, also im ROOT das "Config" mit dem Attribut "name", dessen Wert "Name1" ist, und davon da Attribut "value" auslesen/bearbeiten.
xmlDoc.DocumentElement.Nodes['Config[@name=Name1]\attribute::value']
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz