Ad Widget

Collapse

Мониторинг XML по HTTP

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • borodin
    Junior Member
    • Mar 2021
    • 2

    #1

    Мониторинг XML по HTTP

    Добрый день. Помогите чайнику. По примера документации не совсем получается разобраться потому что нет примера с XML.
    Вводная, есть кондиционер которые по wget выдает XML вида:

    Code:
    <?xml version="1.0" encoding="UTF-8" ?>
    <?xml-stylesheet type="text/xsl" href="/simon.xsl" ?>
    <icom:SimpleMonitoring schemaVersion="1.01" appVersion="PA 104037" fileVersion="(null)" xmlns:icom="http://www.emersonnetworkpower.com/icom" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.emersonnetworkpower.com/icom icom-1-02.xsd">
    <Item id="354" name="SinglState"> <Label>Unit Status</Label> <Value valueType="4" offset="0.000" gain="1.000" precision="0">Alarm On</Value> <Unit></Unit> </Item>
    <Item id="361" name="LocTemp"> <Label>Return Air Temperature</Label> <Value valueType="6" offset="0.000" gain="1.000" precision="1">20.4</Value> <Unit>&#176;C</Unit> </Item>
    <Item id="379" name="Std. Sensor Humidity"> <Label>Return Air Humidity</Label> <Value valueType="6" offset="0.000" gain="1.000" precision="1">12.4</Value> <Unit>%rH</Unit> </Item>
    <Item id="380" name="Supply Air Temperature"> <Label>Supply Air Temperature</Label> <Value valueType="6" offset="0.000" gain="1.000" precision="1">---</Value> <Unit></Unit> </Item>
    Меня интересует только value для LocTemp
    Как правильно заполнить поля чтобы получить это значение.

    Click image for larger version

Name:	Снимок1.PNG
Views:	161
Size:	21.8 KB
ID:	420934
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    При использовании агента HTTP поле "Request body type" имеет смысл лишь в том случае, когда вы сами передаёте в запросе какое-то тело (т.е. этот параметр относится не к ответу сервера, а именно к запросу).
    Если же вопрос сводится к тому, как из ответа (который приходит в виде XML) выдрать нужный фрагмент, то это делается через предобработку (препроцессинг). Для XML-а там вполне работает запрос в виде XPath.
    Проблема в том, что приведённый вами пример ответа лишь похож на XML, но не является well formed XML-документом (как минимум, отсутствует корневой элемент, с которого начинается обработка).
    Поэтому в случае, если результат действительно приходит именно в таком виде, я бы предложил делать предобработку в два шага:
    • сначала вырезать только нужную строку (например, с помощью регулярного выражения) - эта строка, как раз-таки, является номальным XML-ом;
    • вторым шагом из это строки извлекать значение, используя, например, такой XPath:
    Code:
    /Item[@name="LocTemp"]/Value/text()

    Comment

    Working...