Windows runtime XML文件中每个项目的Windows应用商店应用

Windows runtime XML文件中每个项目的Windows应用商店应用,windows-runtime,linq-to-xml,xmldocument,Windows Runtime,Linq To Xml,Xmldocument,谁能告诉我解决方案的正确方向,从xml文件获取数据。我通常在VB应用程序中使用XmlDocument,而且一直都是完美无瑕的 现在Windows应用商店应用不再真正支持xmlDocument,当DOM被导入但XmlNode不可用时,som可以工作。然而,也许只是我一个人,但XDocument在我看来非常困难,而且在简单的XML文件中查找数据的逻辑性也不强 在我使用类似的方法之前: xmlDevices = xmlDoc.GetElementsByTagName("Device") For E

谁能告诉我解决方案的正确方向,从xml文件获取数据。我通常在VB应用程序中使用XmlDocument,而且一直都是完美无瑕的

现在Windows应用商店应用不再真正支持xmlDocument,当DOM被导入但XmlNode不可用时,som可以工作。然而,也许只是我一个人,但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>

VP18
1000
2000
...
试验
批评的
试验
批评的
VP19
1010
2020
...
试验
批评的
试验
批评的
致意
托马斯·尼森(Thomas Nissen)

我用下面的方法得到了它

        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