我有一个解析 XML 输入文件的程序。XML 有点失败。我没有开发架构,也无法控制生成 XML 的程序。这是我遇到问题的 XML 示例。
<object type="vdisk" >
<property name="mdisk_grp_id" value="many" />
<property name="mdisk_grp_name" value="many" />
<property name="mdisk_grp_id" value="10" />
<property name="mdisk_grp_name" value="VMAX5161" />
</object>
问题是同名的多个属性。显然这是不正确的。我需要选择一个没有“很多”作为值的。现在我的程序抓住了它,因为它首先发生。它破坏了程序中的其他内容。这是我尝试过的,除其他外。这是我的 VDisk 类的构造函数的部分列表。它似乎适用于输入文件中的某些“vdisk”类型的对象,但不适用于其他对象。
public VDisk(XElement element)
{
var mdg = from mdgs in element.Descendants("property")
where
mdgs.Attribute("name").Value == "mdisk_grp_name"
select mdgs;
foreach (XElement mdgp in mdg)
{
if (mdgp.Attribute("value").Value != "many")
{
MDiskGrpName = mdgp.Attribute("value").Value;
break;
}
}
}
这是引发异常的代码。没有任何 MDiskGroups 实际上被命名为“many”。所以 var 是空的。我可以捕获异常并继续,但我想将正确的数据放入 VDisk MDiskGroupName 属性。
var mdiskgrp = CurrentCluster.MDiskGroups.Where(mdg => mdg.Name == vdisk.MDiskGrpName);
mdiskgrp.FirstOrDefault().VDiskList.Add(vdisk);