Найти атрибут брата в документе 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. Который затем возвращает ассоциированное (родное?) Имя.
Еще раз спасибо за помощь!