XML auslesen, mainNode.... kann man den ändern?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Thorsten1867
Beiträge: 1360
Registriert: 04.02.2005 15:40
Computerausstattung: [Windows 10 x64] [PB V5.7x]
Wohnort: Kaufbeuren
Kontaktdaten:

Re: XML auslesen, mainNode.... kann man den ändern?

Beitrag von Thorsten1867 »

Helmut hat geschrieben:Muß die erste Zeile beachtet werden: <?xml version="1.0" encoding="ISO-8859-1"?> ??
Stört Die?
Die erste Zeile ist der RootNode und muss vorhanden sein.

Die XML-Datei ist in der Tat ungültig: -<SensorList> => <SensorList>
Download of PureBasic - Module
Download of PureBasic - Programmes

[Windows 11 x64] [PB V6]

Bild
Benutzeravatar
helpy
Beiträge: 636
Registriert: 29.08.2004 13:29

Re: XML auslesen, mainNode.... kann man den ändern?

Beitrag von helpy »

Man kann Daten viel besser strukturieren, verschachteln, einzelnen Knoten auch Eigenschaften zuweisen usw. ...

Ab wenn XML wirklich sinnvoll ist, darüber lässt sich streiten!
Wenn es sich nur um ein paar wenige Daten mit festen Datentypen handelt, dann spricht nichts gegen eine INI- oder PREFS-Datei.

Siehe auch:
==> Vorteile von XML
==> Vor- und Nachteile von XML
Windows 10
PB Last Final / (Sometimes testing Beta versions)
Benutzeravatar
Helmut
Beiträge: 162
Registriert: 20.09.2004 22:53

Re: XML auslesen, mainNode.... kann man den ändern?

Beitrag von Helmut »

In meinem Falle stellt sich die Frage nicht:
Das Gerät liefert die Daten so und wenn das XML-Format passen würde, dann habe ich die Daten in Purebasic und kann mich freuen ;-)

Gruß Helmut
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: XML auslesen, mainNode.... kann man den ändern?

Beitrag von Kiffi »

Thorsten1867 hat geschrieben:Die XML-Datei ist in der Tat ungültig: -<SensorList> => <SensorList>
das kommt davon wenn man die XML-Struktur direkt aus dem IE kopiert. Dieser
ist auf Windows-Rechner als Standard-Viewer für XML-Dateien eingestellt und
legt bei der Anzeige ein CSS-Template darüber, so dass das XML besser lesbar ist.

Hierbei werden leider dann auch die Minus-Zeichen (als faltbare Knotenkennung)
eingefügt.

Bild

@Helmut: Wenn Du XML hier postest, dann nicht aus dem IE kopieren, sondern
in einen normalen Text-Editor laden und von dort aus kopieren.

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
Helmut
Beiträge: 162
Registriert: 20.09.2004 22:53

Re: XML auslesen, mainNode.... kann man den ändern?

Beitrag von Helmut »

Kann man die erste Zeile ignorieren lassen ?? ;-)

So besser?

Code: Alles auswählen

<?xml version="1.0" encoding="ISO-8859-1"?>
<SensorList>
<Sensor>
	<ID>Nr 1</ID>
	<Type>005</Type>
	<Min>02000</Min>
	<Max>03000</Max>
	<Value>02612</Value>
	<Display>021</Display>
</Sensor>
<Sensor>
	<ID>Nr 2</ID>
	<Type>005</Type>
	<Min>02000</Min>
	<Max>03000</Max>
	<Value>02606</Value>
	<Display>021</Display>
</Sensor>
<Sensor>
	<ID>Nr 3</ID>
	<Type>005</Type>
	<Min>02000</Min>
	<Max>03000</Max>
	<Value>02593</Value>
	<Display>021</Display>
</Sensor>
<Sensor>
	<ID>Nr 4</ID>
	<Type>005</Type>
	<Min>02000</Min>
	<Max>03000</Max>
	<Value>02593</Value>
	<Display>021</Display>
</Sensor>
<Sensor>
	<ID>Nr 5</ID>
	<Type>005</Type>
	<Min>02000</Min>
	<Max>03000</Max>
	<Value>02550</Value>
	<Display>021</Display>
</Sensor>
<Sensor>
	<ID>Nr 6</ID>
	<Type>005</Type>
	<Min>02000</Min>
	<Max>03000</Max>
	<Value>02543</Value>
	<Display>021</Display>
</Sensor>
<Sensor>
	<ID>Nr 7</ID>
	<Type>005</Type>
	<Min>02000</Min>
	<Max>03000</Max>
	<Value>02525</Value>
	<Display>021</Display>
</Sensor>
<Sensor>
	<ID>Nr 8</ID>
	<Type>005</Type>
	<Min>02000</Min>
	<Max>03000</Max>
	<Value>02525</Value>
	<Display>021</Display>
</Sensor>
<Sensor>
	<ID>Nr 9</ID>
	<Type>005</Type>
	<Min>02000</Min>
	<Max>03000</Max>
	<Value>02512</Value>
	<Display>021</Display>
</Sensor>
<Sensor>
	<ID>Nr 10</ID>
	<Type>005</Type>
	<Min>02000</Min>
	<Max>03000</Max>
	<Value>02493</Value>
	<Display>021</Display>
</Sensor>
<Sensor>
	<ID>Nr 11</ID>
	<Type>005</Type>
	<Min>02000</Min>
	<Max>03000</Max>
	<Value>02468</Value>
	<Display>021</Display>
</Sensor>
<Sensor>
	<ID>Nr 12</ID>
	<Type>005</Type>
	<Min>02000</Min>
	<Max>03000</Max>
	<Value>02475</Value>
	<Display>021</Display>
</Sensor>
<Sensor>
	<ID>Nr 13</ID>
	<Type>005</Type>
	<Min>02000</Min>
	<Max>03000</Max>
	<Value>02456</Value>
	<Display>021</Display>
</Sensor>
<Sensor>
	<ID>Nr14</ID>
	<Type>005</Type>
	<Min>02000</Min>
	<Max>03000</Max>
	<Value>02437</Value>
	<Display>021</Display>
</Sensor>
<Sensor>
	<ID>Nr 15</ID>
	<Type>005</Type>
	<Min>02000</Min>
	<Max>03000</Max>
	<Value>00000</Value>
	<Display>021</Display>
</Sensor>
<Sensor>
	<ID>Nr 16</ID>
	<Type>005</Type>
	<Min>02000</Min>
	<Max>03000</Max>
	<Value>00000</Value>
	<Display>021</Display>
</Sensor>

</SensorList>
Benutzeravatar
Kurzer
Beiträge: 1617
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Re: XML auslesen, mainNode.... kann man den ändern?

Beitrag von Kurzer »

Helmut hat geschrieben:In meinem Falle stellt sich die Frage nicht
Das war auch nicht auf Deinen Fall bezogen, Helmut - eher ne generelle Frage. ;) Aber ich wollte auch gar nicht groß Deinen Thread kidnappen. Die Antwort von helpy ist schon prima, vielen Dank.

Bin schon wieder weg *whoosh* <)
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.02 x64, OS: Win 7 Pro x64 & Win 11 x64, Desktopscaling: 125%, CPU: I7 6500, RAM: 16 GB, GPU: Intel Graphics HD 520
Useralter in 2024: 56 Jahre.
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Re: XML auslesen, mainNode.... kann man den ändern?

Beitrag von PMV »

@Helmut
Der XML-Parser sollte alles notwendige für dich erledigen, über
die XML-Deklaration musst du dir keine gedanken machen. Welche
Formate der in PB integrierte Parser allerdings tatsächlich verarbeiten
kann, weis ich nicht.

Zum auslesen brauchst du lediglich das Root-Element und damit
kannst du dann auf alle darunter liegenden Elemente zugreifen.
Oder du kennst die genauen "Pfade" der einzelnen Elemente,
dann kannst du wie Kiffe es dir vorgemacht hat auch direkt
auf diese einzeln zugreifen.


Kurzer hat geschrieben:Was ist eigentlich der Vorteil an XML Dateien?
In erster Linie Geschmack. Es ist vorallem eine für Menschen
lesbare Form von Daten und eigent sich daher sehr gut für
Daten, die direkt von Menschen geschrieben werden sollen.
Auf den zweiten Blick ist es aber auch die allgemeine
Verbreitung, so gibt es bereits sehr viele Parser und auch
Editioren, die XML unterstützen und dann ist da die Sache
mit der Validierung. Man kann definieren, wie eine XML aufgebaut
sein soll und so können entsprechende Editoren bereits bei
der Eingabe die gültigkeit prüfen. Auch können viele Parser
so bereits vor der tatsächlichen Verarbeitung der Daten prüfen,
ob auch die enthaltenden Daten logisch richtig sind.


MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Benutzeravatar
Helmut
Beiträge: 162
Registriert: 20.09.2004 22:53

Re: XML auslesen, mainNode.... kann man den ändern?

Beitrag von Helmut »

Neue Erkennnisse:
Die Syntaxfehlermeldung kommt daher, dass das XML-File nicht richtig geladen und gespeichert wird.

Ich habe mir die Daten auf's Laufwerk C speichern lassen und das XML-File ist nicht komplett:
Mit

Code: Alles auswählen

InitNetwork()
ReceiveHTTPFile("http://192.168.0.140/sensorList.xml", "c:\TestHelmut.xml") 
Was mache ich da nu' wieder falsch.... ;-)

Code: Alles auswählen

lay>021</Display>
</Sensor>
<Sensor>
	<ID>Nr 15</ID>
	<Type>005</Type>
	<Min>02000</Min>
	<Max>03000</Max>
	<Value>00000</Value>
	<Display>021</Display>
</Sensor>
<Sensor>
	<ID>Nr 16</ID>
	<Type>005</Type>
	<Min>02000</Min>
	<Max>03000</Max>
	<Value>00000</Value>
	<Display>021</Display>
</Sensor>

</SensorList>
Gruß Helmut
Benutzeravatar
helpy
Beiträge: 636
Registriert: 29.08.2004 13:29

Re: XML auslesen, mainNode.... kann man den ändern?

Beitrag von helpy »

Helmut hat geschrieben:Neue Erkennnisse:
Die Syntaxfehlermeldung kommt daher, dass das XML-File nicht richtig geladen und gespeichert wird.
Soetwas hatte ich schon vermutet, deshalb mein Hinweis sich die XML-Datei selbst anzusehen.

Probiers mal mit folgendem:
==> ReceiveHTTPMemory einfach und Crossplattform
==> oder Http URLDownloadToFile Windows

lg,
guido
Windows 10
PB Last Final / (Sometimes testing Beta versions)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: XML auslesen, mainNode.... kann man den ändern?

Beitrag von ts-soft »

Helmut hat geschrieben:Ich habe mir die Daten auf's Laufwerk C speichern lassen und das XML-File ist nicht komplett:
Ich weiß jetzt nicht welche Windows Version Du mit welchen Rechten nutzt, aber
als User hat man kein Recht in das Wurzelverzeichnis des Systemlaufwerks zu schreiben!
Solltest Du Windows Vista oder höher nutzen und hast keinen User-Modus für Windows Vista in den
Compilereinstellungen, wird Dein Programm virtualisiert und schreibt ganz woanders hin (VirtualStore).
Speicher besser in Dokumente oder auf einem anderem Laufwerk und fordere immer den User-Modus
in den Compilereinstellungen an, ansonsten erfährst Du nie, wenn was mit dem Schreiben von
Dateien oder Werten in die Registry nicht geklappt hat.

Der Tipp von helpy, gleich in den Speicher laden, ist natürlich unproblematisch.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten