Neue Antwort schreiben
Antworten zu Thema: Einzelne Werte einer XML-Datei auslesen und in HTML-Seite einbinden?
Benutzername:
Betreff:
Beitrags-Icon:
Ihre Nachricht:
Smilies
Smile Wink Cool Big Grin
Tongue Rolleyes Shy Sad
At Angel Angry Blush
Confused Dodgy Exclamation Heart
Huh Idea Sleepy Undecided
[mehr]
 
Array
X
Beitragsoptionen:
Themen Abonnement:
Geben Sie die Art der E-Mail-Benachrichtigung und des Abonnements für dieses Thema an (nur registrierte Benutzer).






Themenübersicht (Neueste zuerst)
Geschrieben von BachManiac - 06.06.2022, 08:12
Zitat:Hast du meine Cods mal alle mit den Link versucht
http://10.0.0.18/fresh.xml
natürlich!
Zitat:Kannst du mir mal zeigen, was das für eine Wetterstation ist?
klar!
Das ist die Wetterstation:
https://en.papouch.com/papago-meteo-eth-...poe-p4887/
Und das ist das Handbuch:
https://cdn.en.papouch.com/data/user-con...TEO_en.pdf
Auf Seite 19 ist die XML-Seite beschrieben.
Es gibt noch mehrere Möglichkeiten, die Daten von der Wetterstation zu bekommen: HTTP GET, SNMP, MODBUS TCP, SPINEL, welche ich allesamt (noch) nicht verstehe, weshalb ich zunächst das Auslesen der XML-Datei priorisiert hätte.
Im absoluten Worst-Case müsste ich halt die Original-Weboberfläche von der Wetterstation via Iframe einbinden. Dann hab ich zwar keinerlei Kontorlle über die Formatierung aber ich hätte zumindest irgend eine Anzeige der Daten.

Zitat:Mein Code funktioniert ja, nur die Browser verbieten den Zugriff auf das Lokale Netzwerk.
Schade.
Gibt es nicht ev. einen Trick, die XML-Seite zunächst via iframe in einem "nicht sichtbaren Bereich" zu laden und danach auszulesen?

Vielen vielen Dank für deine Mühe und dein Engagement nochmal!

sG Günther
Geschrieben von admin - 03.06.2022, 17:33
Hast du meine Cods mal alle mit den Link versucht
http://10.0.0.18/fresh.xml

Kannst du mir mal zeigen, was das für eine Wetterstation ist?
Ich habe jetzt so viel gegoogelt und viele verschiedene Codes gesehen usw , die alle irgendwie nicht weite helfen.
Ich verstehe das so das man einen Server brauch (virtuell oder sonst wie ).
Habe gesehen die einige Wetterstationen selbst ein Mini Server sind usw.

Wenn ich im Chrome Browser ein Add-on installiere
https://chrome.google.com/webstore/detai...hemlocgigb
das ist ein Webserver, dann habe ich Zugriff auf die XML Dateien.
Ohne das Add-on bekomme ich in der Konsole die gleichen Fehler wie du sie geschrieben hast.

Du solltest mal schauen, ob du ein Forum findest , das nur über solche Wetterstationen ,Webserver, und Netzwerke reden.
Wenn das Problem mit der XML Datei geregelt ist , ist der Rest ja einfach.

Mein Code funktioniert ja, nur die Browser verbieten den Zugriff auf das Lokale Netzwerk. Das kann man ja umgehen, mit Add-ons oder dem anderen Netzwerk Kram, wo ich noch nicht so durchchecke.
Geschrieben von BachManiac - 03.06.2022, 08:49
Hier zeigt er erfolgreich die originale XML-Datei der Wetterstation an:
 <iframe src="http://10.0.0.18/fresh.xml" ></iframe>

Hier zeigt er erfolgreich die lokale-Testdatei an:
 <iframe src="datei.xml" ></iframe>

Aaaah, jetzt hab ich das mit der Console.log auch verstanden - ich dachte, es wird eine .log-Datei auf der Fesptplatte erstellt - was natürlich nicht geschah.

Jedenfalls, die console spuckt bei meinem Code vom 2.6. folgendes aus:

Fehler: bei Auslesen der XML-Datei TypeError: NetworkError when attempting to fetch resource.
Quellübergreifende (Cross-Origin) Anfrage blockiert: Die Gleiche-Quelle-Regel verbietet das Lesen der externen Ressource auf http://10.0.0.18/fresh.xml. (Grund: CORS-Kopfzeile 'Access-Control-Allow-Origin' fehlt). Statuscode: 200.


Interessanterweise ist die 2. Zeile der Fehlermeldung etwas anders, wenn ich auf die lokal gespeicherte datei.xml zugreifen möchte:

Quellübergreifende (Cross-Origin) Anfrage blockiert: Die Gleiche-Quelle-Regel verbietet das Lesen der externen Ressource auf file:///D:/Dokumente%20synchronisiert/Wetterstation/datei.xml. (Grund: CORS-Anfrage war nicht http).

Ich verstehe das mit deinen 2 Links nicht. 192.168.0.100 ist kein Subnet bei mir, sondern 10.0.0.xxx ist mein Subnet.
Geschrieben von admin - 02.06.2022, 23:11
Du schreibst das die XML Datei im iFrame angezeigt wird?
Sieht der Code so aus
<iframe src"datei.xml"></iframe>

Oder ist der Pfad anders?

Was zeigt den die Konsole an wenn du meinen Code testest?
Sind da Errors , und was zeigen meine console.log() an in der Konsole?

Irgendwo ist da noch ein Problem was ich noch nicht gefunden habe , weil bei mir geht es jetzt.

Teste mein Code mal mit den Link
http://192.168.1.100/datei.xml
oder
http://192.168.1.100/fresh.xml

Geschrieben von BachManiac - 02.06.2022, 06:44
Vielen Dank für deine Mühe, aber es klappt leider immer noch nicht.

Die Wetterstation hat eine eigene IP-Adresse im Heimnetzwerk und auf 'IP-Adresse'/fresh.xml liegt die besagte XML-Datei, welche bei jedem Aufruf die aktuellen Temperaturwerte beinhaltet.

Nun möchte ich auf meinen Rechnern / Handys, welche im Heimnetzwerk verbunden sind, eine auf allen Geräten lokal gespeicherte HTML-Datei direkt öffnen, wo die gewünschten Werte wie in meinem 1. Post frei formatiert und positioniert angezeigt werden sollen. Die besagte HTML-Seite dient nicht einzig und allein der Temperaturüberwachung: ich betreibe auf diese Weise auch mein Video - Live - Überwachungssystem zuhause (ohne Server - bei den Clients werden ohne Zwischenstation direkt die Kamerabilder angezeigt) und da möchte ich gerne auch eine Temperaturanzeige implementieren.

Zu deiner Frage, ja z.B. mit einem simplen Iframe kann ich die XML-Datei auch direkt in einer HTML-Datei anzeigen, aber dann ist das halt die vollständige XML-Datei und nicht die 4 gewünschten Werte isoliert.

Jedenfalls scheitert das Ganze nicht an der Wetterstation, denn wenn ich eine XML-Datei mit den selben Inhalt in den selben Ordner wie die HTML-Datei abspeichere (und den Pfad im code natürlich dementsprechend anpasse) funktioniert es genauso wenig.

Sprich, HTML-Datei und XML-Datei testweise in den selben Ordner, im Code einfach 'datei.xml' eingetragen -> funktioniert leider nicht.

Ich befürchte, dass es da noch ein Missverständnis irgendwo gab:

Hier, damit es keine Missverständlichkeiten gibt:

2 Dateien im selben Ordner lokal auf dem PC abgespeichert:

Datei 1: index.html

<html>

<main>
<label>Sensor 1</label>
<p>Val = <span id="reihe1_val1"></span></p>
<p>Val2 = <span id="reihe1_val2"></span></p>
<label>Sensor 2</label>
<p>Val = <span id="reihe2_val1"></span></p>
<p>Val2 = <span id="reihe2_val2"></span></p>
</main>
<script>
var r1v1=document.getElementById('reihe1_val1');
var r1v2=document.getElementById('reihe1_val2');
var r2v1=document.getElementById('reihe2_val1');
var r2v2=document.getElementById('reihe2_val2');

fetch ('datei.xml', {  
}).then (function (response) {
console.log(response);
    return response.text();
})
.then (function (data) {
        console.log(data);
    let parser = new DOMParser (),
    xmlDoc = parser.parseFromString (data, 'text/xml');
        root=xmlDoc.getElementsByTagName ('root')[0];
//        r1v1.innerHTML=root.children[0].getAttribute('val');
//        r1v2.innerHTML=root.children[0].getAttribute('val2');
//        r2v1.innerHTML=root.children[1].getAttribute('val');
//        r2v2.innerHTML=root.children[1].getAttribute('val2');
            r1v1.innerHTML=root.getElementsByTagName('sns')[0].getAttribute('val');
            r1v2.innerHTML=root.getElementsByTagName('sns')[0].getAttribute('val2');
            r2v1.innerHTML=root.getElementsByTagName('sns')[1].getAttribute('val');
           r2v2.innerHTML=root.getElementsByTagName('sns')[1].getAttribute('val2');
}).catch (function (error) {
console.log ("Fehler: bei Auslesen der XML-Datei " + error);
});
</script>

     
</html>

Datei2:

datei.xml

<root>
<sns id="1" name="Sensor A" type="1" status="0" unit="0" val="25.0" w-min="" w-max="" type2="2" status2="0" unit2="0" val2="44.1" w-min2="" w-max2="" type3="3" status3="0" unit3="0" val3="11.9" w-min3="" w-max3=""/>
<sns id="2" name="Sensor B" type="1" status="0" unit="0" val="21.0" w-min="" w-max="" type2="2" status2="0" unit2="0" val2="54.3" w-min2="" w-max2="" type3="3" status3="0" unit3="0" val3="15.9" w-min3="" w-max3=""/>
<status msp="1" level="2" location="Temperatur" time="01/07/2009 3:26:41"/>
<dbgg stmsp="0" v1="0" v2="0" v3="0" v4="0" v5="0" v6="0" v7="0" v8="0" v9="0" v10="0" v11="0" v12="0" v13="0" v14="0" v15="0" v16="0"/>
</root>

Beim Öffnen der index.html sollen die 4 Werte aus der XML-Datei angezeigt werden.

Danke nochmals und schöne Grüße!

Das Ziel ist zum Greifen nah!!! Big Grin

Günther
Geschrieben von admin - 01.06.2022, 21:21
Habe den ganzen Kram mit Netzwerk und Localhost noch nie so gemacht. Aber ich konnte es jetzt testen und auf localhost testen.
So hat es bei mir geklappt, hoffe du kommst damit weiter
<main>
<label>Sensor 1</label>
<p>Val = <span id="reihe1_val1"></span></p>
<p>Val2 = <span id="reihe1_val2"></span></p>
<label>Sensor 2</label>
<p>Val = <span id="reihe2_val1"></span></p>
<p>Val2 = <span id="reihe2_val2"></span></p>
</main>
<script>
var r1v1=document.getElementById('reihe1_val1');
var r1v2=document.getElementById('reihe1_val2');
var r2v1=document.getElementById('reihe2_val1');
var r2v2=document.getElementById('reihe2_val2');

fetch ('http://127.0.0.1:8887/datei.xml', {  
}).then (function (response) {
console.log(response);
	return response.text();
})
.then (function (data) {
        console.log(data);
	let parser = new DOMParser (),
	xmlDoc = parser.parseFromString (data, 'text/xml');
        root=xmlDoc.getElementsByTagName ('root')[0];
//	    r1v1.innerHTML=root.children[0].getAttribute('val');
//        r1v2.innerHTML=root.children[0].getAttribute('val2');
//        r2v1.innerHTML=root.children[1].getAttribute('val');
//        r2v2.innerHTML=root.children[1].getAttribute('val2');
    	    r1v1.innerHTML=root.getElementsByTagName('sns')[0].getAttribute('val');
            r1v2.innerHTML=root.getElementsByTagName('sns')[0].getAttribute('val2');
            r2v1.innerHTML=root.getElementsByTagName('sns')[1].getAttribute('val');
           r2v2.innerHTML=root.getElementsByTagName('sns')[1].getAttribute('val2');
}).catch (function (error) {
 console.log ("Fehler: bei Auslesen der XML-Datei " + error);
});
</script>
Geschrieben von admin - 01.06.2022, 20:11
Wenn der Inhalt der xml Datei als String im Javascript Code steht , geht es auch so
<main>
<label>Sensor 1</label>
<p>Val = <span id="reihe1_val1"></span></p>
<p>Val2 = <span id="reihe1_val2"></span></p>
<label>Sensor 2</label>
<p>Val = <span id="reihe2_val1"></span></p>
<p>Val2 = <span id="reihe2_val2"></span></p>
</main>
<script>
var data=`<root>
<sns id="1" name="Sensor A" type="1" status="0" unit="0" val="25.0" w-min="" w-max="" type2="2" status2="0" unit2="0" val2="44.1" w-min2="" w-max2="" type3="3" status3="0" unit3="0" val3="11.9" w-min3="" w-max3=""/>
<sns id="2" name="Sensor B" type="1" status="0" unit="0" val="21.0" w-min="" w-max="" type2="2" status2="0" unit2="0" val2="54.3" w-min2="" w-max2="" type3="3" status3="0" unit3="0" val3="15.9" w-min3="" w-max3=""/>
<status msp="1" level="2" location="Temperatur" time="01/07/2009 3:26:41"/>
<dbgg stmsp="0" v1="0" v2="0" v3="0" v4="0" v5="0" v6="0" v7="0" v8="0" v9="0" v10="0" v11="0" v12="0" v13="0" v14="0" v15="0" v16="0"/>
</root>`;

var r1v1=document.getElementById('reihe1_val1');
var r1v2=document.getElementById('reihe1_val2');
var r2v1=document.getElementById('reihe2_val1');
var r2v2=document.getElementById('reihe2_val2');
let parser = new DOMParser (),
xmlDoc = parser.parseFromString (data, 'text/xml');
root=xmlDoc.getElementsByTagName ('root')[0];
//r1v1.innerHTML=root.children[0].getAttribute('val');
// r1v2.innerHTML=root.children[0].getAttribute('val2');
// r2v1.innerHTML=root.children[1].getAttribute('val');
//  r2v2.innerHTML=root.children[1].getAttribute('val2');   
        
r1v1.innerHTML=root.getElementsByTagName('sns')[0].getAttribute('val');
r1v2.innerHTML=root.getElementsByTagName('sns')[0].getAttribute('val2');
r2v1.innerHTML=root.getElementsByTagName('sns')[1].getAttribute('val');
r2v2.innerHTML=root.getElementsByTagName('sns')[1].getAttribute('val2');  
 
</script>
Geschrieben von admin - 01.06.2022, 19:49
Mein Code ist kein PHP.
Das ist nur HTML und Javascript.
Ich habe noch nie versucht, Dateien mit Javascript aufzurufen (also im Heimnetzwerk).
Habe aber auch noch nie im Heimnetzwerk sowas versucht.
Wie läuft das den bei dir?
Hast du die xml Datei auf irgendein Computer , und du versucht mit einem anderen oder gleichen Computer die xml Datei mit einer HTML Datei aufzurufen?
Geschrieben von BachManiac - 01.06.2022, 16:34
Ja genau, ich benötige das in meinem lokalen Heimnetzwerk. Ich wusste nicht, dass diese Info relevant ist.

Dein online gestellter Code ist ne PHP - Datei. Kann es sein, dass es deshalb nicht geht, weil es eben einen PHP-Server erfordert?
Geschrieben von admin - 01.06.2022, 15:50
Habe den Code mal online gestellt
https://basti1012.bplaced.net/testodner_.../index.php
Wie du siehst geht es.

Vielleicht kannst du da mal schauen, ob du da was sehen kannst.

EDIT:
Ich glaube Mein Code geht nur online.
Du brauchst aber ein Code, de nicht Online läuft, oder?
Melde mich später nochmal weil muss erst was testen.
Dieses Thema hat mehr als 10 Antworten. Ganzes Thema lesen.