【发布时间】:2013-05-17 12:42:38
【问题描述】:
我的代码如下:
XDocument xmlDoc = XDocument.Load("myXML.xml");
var data = from items in xmlDoc.Root.Elements("category")
where items.Attribute("value").Value == "idxCategoryPlatformEngine"
select new
{
attribute = items.Element("attributes").Element("attribute").Element("name").Value,
trigger = items.Element("attributes").Element("attribute").Element("trigger").Value,
value = items.Element("attributes").Element("attribute").Element("value").Value,
minutes = items.Element("attributes").Element("attribute").Element("minutes").Value
};
我拥有的XML如下:
<?xml version="1.0" encoding="utf-8"?>
<GMS>
<category value="idxCategoryPlatformEngine">
<attributes>
<attribute>
<name>CheckpointFileCorruptionAlarm.InAlarm</name>
<trigger>EQ</trigger>
<value>TRUE</value>
<minutes>0</minutes>
</attribute>
<attribute>
<name>CPULoad</name>
<trigger>GT</trigger>
<value>60</value>
<minutes>5</minutes>
</attribute>
<attribute>
<name>Engine.Historian.InStoreForward</name>
<trigger>EQ</trigger>
<value>TRUE</value>
<minutes>0</minutes>
</attribute>
</attributes>
</category>
<category value="idxCategoryApplicationEngine">
<attributes>
<attribute>
<name>CheckpointFileCorruptionAlarm.InAlarm</name>
<trigger>EQ</trigger>
<value>TRUE</value>
<minutes>0</minutes>
</attribute>
<attribute>
<name>CPULoad</name>
<trigger>GT</trigger>
<value>60</value>
<minutes>5</minutes>
</attribute>
<attribute>
<name>Engine.Historian.InStoreForward</name>
<trigger>EQ</trigger>
<value>TRUE</value>
<minutes>0</minutes>
</attribute>
</attributes>
</category>
</GMS>
现在,当我运行代码时,它会执行查询,但是它只返回我真正想要所有属性的第一个属性。
感谢您对此的任何帮助,因为它让我发疯,我为尝试解决此问题所做的每项更改只会导致更多问题!
【问题讨论】:
-
元素没有关闭 - 我假设这只是粘贴到问题中时的疏忽,并且实际的 XML 文件格式正确? -
正确!当我发现它时,我自己编辑了它:)
-
您可以随时在 Internet Explorer 中打开您的 XML 文件来验证它。如果有任何错误,它会在开头提示。