Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何检查节点属性中缺少的值?_C#_Xml_Linq To Xml - Fatal编程技术网

C# 如何检查节点属性中缺少的值?

C# 如何检查节点属性中缺少的值?,c#,xml,linq-to-xml,C#,Xml,Linq To Xml,如何检查特定节点属性值中缺少/跳过的值 e、 十, 但是很难正确地实现它。一个可能的解决方案是通过替换“abc”,提取所有ID的数量: 这些条目的属性顺序是否总是正确的?@Fruchtzwerg不一定……这可能是也可能不是简单的了解期望值列表,将其与观察值进行比较,并打印差异?o_0如何在旧版本的c#(.NET 4.5)中执行if(int.TryParse(lvl.Attribute(“id”).Value.Replace(“abc”),out int-id)),如int-id=0;if(int

如何检查特定节点属性值中缺少/跳过的值 e、 十,


但是很难正确地实现它。

一个可能的解决方案是通过替换
“abc”
,提取所有ID的数量:


这些条目的属性顺序是否总是正确的?@Fruchtzwerg不一定……这可能是也可能不是简单的了解期望值列表,将其与观察值进行比较,并打印差异?o_0如何在旧版本的c#(.NET 4.5)中执行
if(int.TryParse(lvl.Attribute(“id”).Value.Replace(“abc”),out int-id))
,如
int-id=0;if(int.TryParse(lvl.Attribute(“id”).Value.Replace(“abc”),out-id))
<?xml version="1.0"?>
<root>
    <lvl id="abc1">1036</lvl>
    <lvl id="abc2">0036</lvl>
    <lvl id="abc3">3.<dc>04</dc></lvl>
    <lvl id="abc5">87.<dc>03</dc></lvl>
    <lvl id="abc6">996</lvl>
    <lvl id="abc10">203</lvl>
</root>
public  static Boolean CompareNext(this XElement xe)
        {
            return Convert.ToInt16(xe.Attribute("id").Value.Replace("abc", ""))+1== Convert.ToInt16(xe.ElementsAfterSelf().FirstOrDefault().Attribute("rid").Value.Replace("ref", ""));
        }
//Load the document
XDocument doc = XDocument.Load(@"PATH_TO_FILE.xml");

//Extract all ID's
var ids = new List<int>();
foreach (var lvl in doc.Root.Elements())
{
    if (int.TryParse(lvl.Attribute("id").Value.Replace("abc", ""), out int id))
    {
        ids.Add(id);
    }
}
//Get the missing ID's
int minId = ids.Min();
int maxId = ids.Max();
var missingIds = Enumerable.Range(minId, maxId - minId).Except(ids);