【问题标题】:Windows Store Apps For each item in a XML fileWindows 应用商店应用程序对于 XML 文件中的每个项目
【发布时间】:2013-11-26 09:48:41
【问题描述】:

谁能指出我正确的解决方案,从 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>

最好的问候 托马斯·尼森

【问题讨论】:

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


    【解决方案1】:

    我得到了它的关注。

            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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-18
      • 1970-01-01
      • 1970-01-01
      • 2016-03-31
      • 2012-12-22
      • 1970-01-01
      相关资源
      最近更新 更多