Ad Widget

Collapse

xml xpath не работает

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Alex001
    Junior Member
    • Jun 2018
    • 27

    #1

    xml xpath не работает

    4.0
    http agent item читает такой xml -

    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <DeviceInfo version="1.0"
    xmlns="http://www.hikvision.com/ver10/XMLSchema">
    <deviceName>IP DOME</deviceName>
    <deviceID>88</deviceID>
    <deviceDescription>IPDome</deviceDescription>
    <deviceLocation>hangzhou</deviceLocation>
    <systemContact>Hikvision.China</systemContact>
    <model>DS-2DE5220IW-AE</model>
    <serialNumber>DS-2DE5220IW-AE20170814CCWR814728672</serialNumber>
    <macAddress>4c:bd:8f:72:fd:fe</macAddress>
    <firmwareVersion>V5.4.8</firmwareVersion>
    <firmwareReleasedDate>build 170210</firmwareReleasedDate>
    <bootVersion>V1.3.4</bootVersion>
    <bootReleasedDate>100316</bootReleasedDate>
    <hardwareVersion>0x0</hardwareVersion>
    </DeviceInfo>
    в dependet item добавляю препроцессор XML XPath -
    number(/DeviceInfo/deviceID),
    результат -

    Click image for larger version

Name:	aa.jpg
Views:	228
Size:	16.3 KB
ID:	410836
    пробовал по-разному, не работает.
    Что сделано не так?
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    Этот сайт показывает, что корректно отрабатывает такой XPath:
    Code:
    number(/DeviceInfo/deviceID/text())
    если из тега <DeviceInfo> убрать атрибут xmlns. Впрочем, с этим атрибутом он никакой XPath не воспринимает -- возможно, потому что указанный в атрибуте URL недоступен, и поэтому не удаётся распарсить исходный XML.

    Comment

    • Alex001
      Junior Member
      • Jun 2018
      • 27

      #3
      Originally posted by Kos
      показывает, что корректно отрабатывает такой XPath:
      Code:
      number(/DeviceInfo/deviceID/text())
      если из тега <DeviceInfo> убрать атрибут xmlns. .
      что-то у меня этот сайт по кнопке "Test" дает -

      WARNING - Processing of namespace declaration [number(/DeviceInfo/deviceID/text())] failed. Right format: PREFIX=NAMESPACE. Declaration skipped.
      ERROR - Seem there is no XPath provided?

      xmlns убрал

      Comment

      • Alex001
        Junior Member
        • Jun 2018
        • 27

        #4
        А вот этот -
        https://www.freeformatter.com/xpath-...html#ad-output
        дает правильный результат! В том виде, как у меня в первом посте.

        >>Double='88'

        Как так-то?

        В Забиксе как понимаю, используется libxml2, вероятно это она тупит?

        Comment

        • oscar
          Senior Member
          • Dec 2010
          • 141

          #5
          Хиквижены мониторите, коллега?
          Тоже столкнулись с такой же проблемой. Как правильно выше написал товарищ Kos, все дело в атрибутах xmlns. Мы просто выпилили их постобработкой через JS.
          Что-то вроде этого:
          Code:
          var re1 = /<\?xml version=\"1.0\" encoding=\"UTF-8\"\?>/gi;
          var re2 = / version=\"2.0\" xmlns=\"http:\/\/www.hikvision.com\/ver20\/XMLSchema\"/gi;
          var re3 = / version=\"2.0\" xmlns=\"http:\/\/www.std-cgi.com\/ver20\/XMLSchema\"/gi;
          return value.replace(re1,"").replace(re2,"").replace(re3, "");
          и потом уже скармливаем XMLpatch через зависимые элементы данных.

          p.s. Если не секрет как победили digest авторизацию? Её вроде только в 5.2 реализовали...

          Comment

          Working...