Member 14369124 Ответов: 1

Как я могу перейти от корней к его элементам в XML C#?


<Device>
<pre><Information>
    <Model>Model name here</Model>
    <Manufacturer>Manufacturer name here</Manufacturer>
</Information>

<Output>
    <X>
        <Specifics>
            <VInput>10</VInput>
            <IInput>10</IInput>
            <VRes>0.10</<VRes>
            <IRes>0.10</IRes>
        </Specifics>
        
        <Instruction>
            <Id>"ID"</Id>
            <Values>PR0, DS0, VX{0}, AX{0}</Values>
            <MainSwitch>SW{0}</MainSwitch>
            <OutSwitch>OX{0}</OutSwitch>
        </Instruction>
    </X>
    <Y>
        <Specifics>
            <VInput>10</VInput>
            <IInput>10</IInput>
            <VRes>0.10</<VRes>
            <IRes>0.10</IRes>
        </Specifics>
        
        <Instruction>
            <Id>"ID"</Id>
            <Values>PR0, DS0, VY{0}, AY{0}</Values>
            <MainSwitch>SW{0}</MainSwitch>
            <OutSwitch>OY{0}</OutSwitch>
        </Instruction>
    </Y>
    <Z>
        <Specifics>
            <VInput>10</VInput>
            <IInput>10</IInput>
            <VRes>0.10</<VRes>
            <IRes>0.10</IRes>
        </Specifics>
        
        <Instruction>
            <Id>"ID"</Id>
            <Values>PR0, DS0, VZ{0}, AZ{0}</Values>
            <MainSwitch>SW{0}</MainSwitch>
            <OutSwitch>OZ{0}</OutSwitch>
        </Instruction>
    </Z>
</Output>



//Как я могу искать xml-файлы, не указывая вручную путь к файлу?
//Как я могу перейти от корневого устройства - используя универсальный класс - получить PWID, не указывая его вручную точно так же, как пример кода, чтобы я мог повторно использовать его для других xml - файлов с теми же полями, но другими значениями. Без использования тегов "информация", "настройки" и т. д

Что я уже пробовал:

строка searchFile = "C:\\Users\\XMLFiles\\PS.xml";
пробовать
{
Документ XmlDocument объект = новый объект XmlDocument();
документ.Загрузить(searchFile);
Отображает устройства = документ [устройства""];
XmlElement output = устройство["выход"];
XmlElement x = выход["X"];
Инструкция XmlElement = X["инструкция"];
строковые значения = инструкция.SelectSingleNode("Значения").Через свойство innerText;
Приставка.WriteLine(сила);
Приставка.Линия чтения();
}

ловить
{
бросать;
}

1 Ответов

Рейтинг:
2

RickZeeland

Смотрите пример здесь: https://ehikioya.com/get-xml-document-nodes-recursively/[^]
Он использует:

XmlNodeList children = node.ChildNodes;


Member 14369124

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

RickZeeland

И делает (строковый)узел.Значение не дает значения, которое вы можете сравнить ?