【发布时间】:2016-07-16 09:54:40
【问题描述】:
我有一个如下所示的 XML:
<?xml version="1.0" encoding="utf-8" ?>
<root>
<data>
<dataname>A</dataname>
<property>
<name>One</name>
<value>1</value>
</property>
<property>
<name>Two</name>
<value>2</value>
</property>
</data>
<data>
<dataname>B</dataname>
<property>
<name>One</name>
<value>11</value>
</property>
<property>
<name>Two</name>
<value>22</value>
</property>
</data>
</root>
我正在尝试在 Visual Studio (c#) 中编写一个函数,该函数从 name - value 对中返回 value 部分。到目前为止,我可以通过以下方式实现这一目标
(我知道,目前没有错误检查):
//private static XElement xml = new XElement("root");
//xml = XElement.Load("Defaults.xml"); -> this happens on program initialization
// The program accesses it several times, so I'm keeping it in the memory to avoid excess HDD usage
public int GetDefaultValue(string dataBlock, string propName)
{
var xx =
from first in xml.Elements("data")
where (string)first.Element("dataname") == dataBlock
select first;
var yy =
from second in xx.Elements("property")
where (string)second.Element("name") == propName
select second;
return int.Parse(yy.First().Element("value").Value);
}
我认为这看起来很糟糕,并且在阅读了大量有关 LINQ to XML 的 MSDN 之后,我认为我离使它成为更好的代码更近了一步。每当我尝试使用单个变量执行此操作时,我都没有得到我想要的结果。
有人可以帮我简化一下吗? (所以我可能会知道我做错了什么)
【问题讨论】:
标签: c# linq linq-to-xml