Windows runtime XML文件中每个项目的Windows应用商店应用
谁能告诉我解决方案的正确方向,从xml文件获取数据。我通常在VB应用程序中使用XmlDocument,而且一直都是完美无瑕的 现在Windows应用商店应用不再真正支持xmlDocument,当DOM被导入但XmlNode不可用时,som可以工作。然而,也许只是我一个人,但XDocument在我看来非常困难,而且在简单的XML文件中查找数据的逻辑性也不强 在我使用类似的方法之前: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
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