【发布时间】:2013-12-09 17:31:18
【问题描述】:
当我指定 VM 名称值时,我想从附加的 xml 文件中读取浏览器和语言值。我尝试多次运行以下方法,但我不断收到错误。任何人都可以建议我的代码修复或更好的方法来获得我想要的东西吗? 非常感谢。 J.
<?xml version='1.0' encoding='utf-8'?>
<automationSettings>
<!--VM settings on ESX Server-->
<VM name="DE-2K8" language="de" powerOn="true">
<vmClients>
<vmClient name="ITXP" language="it"/>
</vmClients>
<guest>
<browser value = "firefox"/>
<language value = "de"/>
</guest>
</VM>
<VM name="EN2008" language="en" powerOn="true">
<vmClients>
<vmClient name="IT-2K8R2ENT64X" language="it"/>
</vmClients>
<guest>
<browser value = "chrome"/>
<language value = "en"/>
</guest>
</VM>
</automationSettings>
这是我用来尝试获取浏览器或语言值的代码:
public static string ReadVMSettings(string systemName, string section, string name)
{
try
{
systemsFilePath = @"C:\Text.xml";
Console.WriteLine("Systems.xml path is: " + systemsFilePath);
XDocument systemXML = XDocument.Load(systemsFilePath);
var result = from vm in systemXML.Descendants("automationSettings")
.Descendants("VM")
.Descendants(section)
where vm.Attribute("name").Value == systemName
select vm.Element(name).Attribute("value").Value;
return result.First();
}
catch (Exception ex)
{
Console.WriteLine("ReadVMSettings exception: " + ex.ToString());
return string.Empty;
}
}
这样称呼它: ReadVMSettings("EN2008", "guest", "language");
感谢。
【问题讨论】:
-
更具体 - 您遇到了什么错误?谢谢。
标签: c# linq xml-parsing