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

时间:2013-11-26 09:48:42

标签: windows-runtime linq-to-xml xmldocument

任何人都可以指向解决方案的方向,从xml文件中获取数据。我通常在VB应用程序中使用XmlDocument,并且一直都是完美无缺的。

现在Windows Store应用程序不再支持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>

最诚挚的问候 托马斯尼森

1 个答案:

答案 0 :(得分: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