HTTPMOD oder Ähliches um komplette XML zu Readings umzuwandeln

Begonnen von obi, 20 Juni 2020, 11:56:30

Vorheriges Thema - Nächstes Thema

obi

Hallo,

ich blicke gerade nicht durch wie ich mit HTTPMOD eine XML auslesen kann. Im Wiki kann ich nur finden wie ich einzelne Readings per Regex oder XPath erstellen kann. Ich möchte aber wie bei JSON alle Readings autmatisch erstellen lassen.

Es geht um das Auslesen meiner Firewall.
Folgendermaßen sieht die XML aus (nur ein kleiner Ausschnitt)
<?xml version="1.0" encoding="UTF-8"?>
<Response APIVersion="1702.1" IPS_CAT_VER="1">
  <Login>
    <status>Authentication Successful</status>
  </Login>
  <BridgePair transactionid="">
    <Status>No. of records Zero.</Status>
  </BridgePair>
  <VLAN transactionid="">
    <Zone>LAN</Zone>
    <Interface>Port1</Interface>
    <Name>Port1.11</Name>
    <VLANID>11</VLANID>
    <IPv4Configuration>Enable</IPv4Configuration>
    <IPv6Configuration>Disable</IPv6Configuration>
    <IPv4Assignment>Static</IPv4Assignment>
    <IPv6Address/>
    <IPv6Prefix/>
    <IPv6GatewayName/>
    <IPv6GatewayAddress/>
    <LocalIP/>
    <Status>Connected</Status>
    <IPv6Assignment/>
    <DHCPRapidCommit/>
    <IPAddress>192.168.11.1</IPAddress>
    <Netmask>255.255.255.0</Netmask>
  </VLAN>
  <VLAN transactionid="">
    <Zone>LAN</Zone>
    <Interface>Port1</Interface>
    <Name>Port1.12</Name>
    <VLANID>12</VLANID>
    <IPv4Configuration>Enable</IPv4Configuration>
    <IPv6Configuration>Disable</IPv6Configuration>
    <IPv4Assignment>Static</IPv4Assignment>
    <IPv6Address/>
    <IPv6Prefix/>
    <IPv6GatewayName/>
    <IPv6GatewayAddress/>
    <LocalIP/>
    <Status>Connected</Status>
    <IPv6Assignment/>
    <DHCPRapidCommit/>
    <IPAddress>192.168.12.1</IPAddress>
    <Netmask>255.255.255.0</Netmask>
  </VLAN>


Ich stelle mir das Ergebnis/Readings irgendwie so vor:
VLAN-01-Zone LAN
VLAN-01-Interface Port 1
VLAN-01-Name Port1.11
VLAN-02-Zone LAN
VLAN-02-Interface Port 1
VLAN-02-Name Port1.12
...

Ist es möglich das so einzustellen? Es wäre viel zu aufwendig für jedes einzelne Reading ein Attribut usw. zu konfigurieren.

VG Sebastian

amenomade

#1
Ein "extractAllXML", ähnlich wie "extractAllJSON", gibt es nicht.

Du hast aber kaum 20 Werte zu holen...
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

betateilchen

Da die Struktur ja bekannt und offenbar recht einfach ist, kannst Du sowas einfach in Deiner 99_myUtils.pm umsetzen. Dafür braucht man nicht immer HTTPMOD.

Im Forum gibt es schon eine ganze Reihe Beispiele, wie man XML Daten mit wenigen Zeilen Code extrahieren kann.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

obi

Danke für die Hinweise,

ich habe jetzt auch nur die Werte die ich benötige Geholt, da war der Aufwand doch eher gering.

VG