0
<?xml version='1.0' encoding='utf-8'?>
<automationSettings>
<VM name="DE-123" language="de" powerOn="true">
<vmClients>
<vmClient name="KO-123" language="ko"/>
<vmClient name="US-123" language="en"/>
<vmClient name="FR-123" language="fr"/>
</vmClients>
</VM>
<VM name="ES-123" language="en" powerOn="true">
<vmClients>
<vmClient name="IT-123" language="it"/>
<vmClient name="JA-123" language="ja"/>
</vmClients>
</VM>
</automationSettings>
我有一個C#方法,當VM元素具有匹配的名稱時,應該返回所有vmClient名稱屬性的值。例如,我想獲取名爲「DE-123」的虛擬機的vmClient名稱。這是我試過的代碼,但它沒有返回任何東西。我究竟做錯了什麼?感謝您提供的任何幫助。使用LINQ返回所有匹配的XML節點
public static void GetClientsList(string systemName)
{
systemsFilePath = "text.xml";
string listOfClients = string.Empty;
try
{
var xdoc = XDocument.Load(systemsFilePath);
var query = from vm in xdoc.Root.Descendants("VM").Descendants("vmClients").Elements()
where vm.Attribute("name").Value == systemName
select new
{
Name = (string)vm.Attribute("name").Value
};
var vms = query.ToList();
for (int i = 0; i < vms.Count; i++)
{
listOfClients += vms[i].Name + " ";
}
Global.epoClients = listOfClients;
}
catch (Exception ex)
{
Console.WriteLine("GetClientsList exception: " + ex.Message);
}
}
}
您目前正在測試'vmClients'元素中的'name'屬性 - 但'name'屬性僅在'vmClient'(單數)或'VM'上。 –