Разобрать данные от XML - PullRequest
       0

Разобрать данные от XML

1 голос
/ 19 февраля 2020

Я пытаюсь прочитать узел "ProtectedElements" в файле xml ниже. Я могу прочитать информацию выше этого узла без проблем, но, похоже, не могу найти способ считывания контрольной суммы с этого конкретного узла. Когда я пытаюсь прочитать его, код возвращает «ноль».

Я пытался найти документацию от Microsoft, но примеры, похоже, не помогают. Я думаю, это как-то связано с вложенностью, но я не могу найти решение. Я только хочу зачитать значение атрибута.

Любая помощь приветствуется.

        var doc = XDocument.Load(TempFile);

        // get LockInfo element
        var lockInfoElement = doc.Root.Element(ns + "LockInfo");

        // get lockDate 
        var lockDateAttr = lockInfoElement.Attribute("lockDate");
        var lockDateText = lockDateAttr.Value;
        var lockDate = DateTime.Parse(lockDateText);

        // get locked by 
        var lockedByAttr = lockInfoElement.Attribute("lockedBy");
        var lockedByText = lockedByAttr.Value;
        var lockedBy = lockedByText.ToString();

        // get ValidationInfo element
        var validationInfoElement = doc.Root.Element(ns + "ValidationInfo");

        var validationDateAttr = validationInfoElement.Attribute("validationDate");
        var validationDateText = validationDateAttr.Value;
        var validationDate = DateTime.Parse(validationDateText);

        // get ValidationInfo element
        var validationByAttr = validationInfoElement.Attribute("validatedBy");
        var validationByText = validationByAttr.Value;
        var validationBy = validationByText.ToString();

        // get ConfigSeal checksum element
        var configInfoElement = doc.Root.Element(ns + "ConfigurationSeal");
        var configurationSealAttr = configInfoElement.Attribute("checksum");
        var configurationSealChkSum = configurationSealAttr.Value;
        var configurationSealText = configurationSealChkSum.ToString();

        //--------------------------------------------------------------------

        // get Protected elements checksum
        var protectedElements = doc.Root.Element(ns + "ProtectedElements");
        var protectedElementsAttr = protectedElements.Attribute("checksum");
        var protectedElementsChkSum = protectedElementsAttr.Value;
        var protectedElementsText = protectedElementsChkSum.ToString();

XML ДАННЫЕ:

<SafetyConfiguration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:abb-robotics-safety-controller-configuration sc_cfg.1.00.01.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" version="1.00.01" xmlns="urn:abb-robotics-safety-controller-configuration">
  <ValidationInfo validationDate="2019-08-29T13:45:16" validatedBy="W01 Admin"/>
  <LockInfo lockDate="2020-02-11T13:54:07" lockedBy="W01 Admin" controllerId="6700-110323"/>
  <ConfigurationSeal checksum="776890E3E367E5171CC3FD52700BE8FA5373422BCC6C4214C0321E6BEC02EA52" creationDate="2019-08-29T13:39:23.2736126+02:00" createdBy="W01 Admin" systemName="00RZ21_ST010_IR001" swVersion="1.02.04">
    <ProtectedElements checksum="20E318119904F2A8506AD3A00035BE2FE562FA772D371DCC43B04A2E4622550F" />
    <SiosCfg version="1.0">
      <Net name="PNFDevice">
        <Device name="PNFDeviceDev" inSizeBits="64" outSizeBits="64" address="">
          <Module name="InputOutputModule" inputSize="8" outputSize="8" sourceAddress="100" destAddress="144" wdTimeout="500" crcLength="3" fParVersion="2" slot="3" silLevel="2" visible="true" readonly="false" />

1 Ответ

3 голосов
/ 19 февраля 2020
var protectedElements = configInfoElement.Element(ns + "ProtectedElements");
var protectedElementsAttr = protectedElements.Attribute("checksum");

В первой строке мы ищем под configInfoElement вместо doc.Root, а во второй строке мы ищем под protectedElements вместо configInfoElement

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...