2013-11-26 3 views
0

Может ли кто-нибудь указать мне в правильном направлении решения, чтобы получить данные из XML-файла. Я нормально использую XmlDocument в приложениях VB и все время работал безупречно.Приложения для Windows Store Для каждого элемента в XML-файле

Теперь приложения для Windows Store действительно не поддерживают xmlDocument больше, som работает, когда DOM импортируется, но XmlNode недоступен. Однако, возможно, мне только мне, но XDocument, кажется, очень сложно и не очень логично искать данные в простом XML-файле.

, прежде чем я использовал некоторые так:

xmlDevices = xmlDoc.GetElementsByTagName("Device") 
For Each xmlDevice As xmlElement In xmlDevices 
    Dim strDeviceName As String = xmlDevice.Item("DeviceName").InnerText 

    xmlModbuses = xmlDoc.GetElementsByTagName("Modbus") 
    For Each xmlModbus As xmlElement In xmlModbuses 
    Dim strModbusID As String = xmlModbus.Attributes("id").InnerText 
    Next 
Next 

XML-файл я хочу искать данные выглядят следующим образом:

<?xml version="1.0" encoding="utf-8" ?> 
<Devices> 
<Device id="01"> 
    <DeviceName>VP18</DeviceName> 
    <Modbusees> 
    <Modbus id="01">1000</Modbus> 
    <Modbus id="02">2000</Modbus> 
    ... 
    </Modbuses> 
    <Alarms> 
    <Alarm id="01"> 
    <AlarmText>Test</AlarmText> 
    <AlarmType>Critical</AlarmType> 
    </Alarm> 
    <Alarm id="02"> 
    <AlarmText>Test</AlarmText> 
    <AlarmType>Critical</AlarmType> 
    </Alarm> 
    </Alarms> 
<Device id="02"> 
    <DeviceName>VP19</DeviceName> 
    <Modbusees> 
    <Modbus id="01">1010</Modbus> 
    <Modbus id="02">2020</Modbus> 
    ... 
    </Modbuses> 
    <Alarms> 
    <Alarm id="01"> 
    <AlarmText>Test</AlarmText> 
    <AlarmType>Critical</AlarmType> 
    </Alarm> 
    <Alarm id="02"> 
    <AlarmText>Test</AlarmText> 
    <AlarmType>Critical</AlarmType> 
    </Alarm> 
    </Alarms> 
</Device> 
</Devices> 

С наилучшими пожеланиями Томас Ниссна

ответ

0

Я получил это работает со следующими.

 Dim xDoc As XDocument = XDocument.Load(xmlStream.AsStreamForRead()) 

     Dim xmlDevices = xDoc.Root.Elements("Device") 
     For Each xmlDevice In xmlDevices 
      If xmlDevice.Attribute("id").Value = RoamingSettings.Containers("Device").Values("DeviceID") Then 

       Dim xmlAlarms = xmlDevice.Descendants("Alarm") 
       For Each xmlAlarm In xmlAlarms 
        If xmlAlarm.Attribute("id").Value = strAlarmID Then 
         strAlarmDisp = xmlAlarm.Element("AlarmDisp").Value 
         strAlarmType = xmlAlarm.Element("AlarmType").Value 
         strAlarmDesc = xmlAlarm.Element("AlarmDesc").Value 
         strAlarmHelp = xmlAlarm.Element("AlarmHelp").Value 
        End If 
       Next 
      End If 
     Next 
Смежные вопросы