Найти атрибут брата в документе XML

WonderWare, которую я использую, создает следующий XML-документ

<ItemsList>
    <Item Name="31" Alias="PMP1_ANY_FAULT"/>
    <Item Name="29" Alias="PMP1_DEVIATION"/>
    <Item Name="27" Alias="PMP1_DISCREPANCY"/>
    <Item Name="25" Alias="PMP1_EQUIP_SC_BAD"/>
    <Item Name="402019 F" Alias="PMP1_EQUIP_SP"/>
</ItemsList>

Используя VB.Net, я могу открыть документ, но не могу понять, как найти индекс по его псевдониму, а затем вернуть ассоциированное имя элемента. Честно говоря, я даже не могу найти пример, где два элемента объединены вместе, как эта программа, поэтому я чувствую, что просто случайно ударил в темноте, пытаясь найти информацию.

В настоящее время я использую xPath для взаимодействия с XML-файлом, но если что-то еще будет работать лучше, я готов попробовать что-то еще.

Изменить: Изменено название вопроса, чтобы более точно отражать, что мне нужно помочь с.

1 ответ

Решение

Спасибо @Crowcode и @Phrogz за указание в правильном направлении. Вот окончательный код

dim v as string;
dim ItemDBXMLString as string;
dim doc as System.Xml.XmlDocument;
dim SR as System.IO.StringReader;
dim TR as System.Xml.XmlTextReader;
dim nodeList as System.Xml.XmlNodeList;
dim root as System.Xml.XmlNode;
dim Node as System.Xml.XmlNode;
dim x as integer;

ItemDBXMLString = MB_TCPIP.PLC_001.AliasDatabase;
doc = new System.Xml.XmlDocument;
SR = new System.IO.StringReader(ItemDBXMLString);
TR = new System.Xml.XmlTextReader(SR);
doc.Load(TR);
root = doc.DocumentElement;

Address = root.SelectSingleNode("/ItemsList/Item[@Alias='PMP1_SI_VALUE']/@Name").InnerText;

Мне пришлось явно использовать System.XML, потому что WonderWare не позволял мне использовать импорт. Кроме того, я беру XML-файл (который на самом деле является просто большой строкой) и ищу в нем конкретное псевдоним. Поскольку все мои значения псевдонимов уникальны, мне нужно использовать только один узел select. Который затем возвращает ассоциированное (родное?) Имя.

Еще раз спасибо за помощь!

Другие вопросы по тегам