Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.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# Linq到XML查询从XML创建空项_C#_Vb.net_Linq To Xml - Fatal编程技术网

C# Linq到XML查询从XML创建空项

C# Linq到XML查询从XML创建空项,c#,vb.net,linq-to-xml,C#,Vb.net,Linq To Xml,有人能解释一下为什么是xml吗 <?xml version="1.0" encoding="utf-8"?> <items> <item id="77" cityID="EE12345" cityDatum="15.2.2010. 11:28:35" /> </items> 结果是(myStorage的)列表中有两个项——一个是所有空(nothing)属性,另一个是上面xml中的值 我通过添加 Where items.@id IsNot No

有人能解释一下为什么是xml吗

<?xml version="1.0" encoding="utf-8"?>
<items>
  <item id="77" cityID="EE12345" cityDatum="15.2.2010. 11:28:35" />
</items>
结果是(myStorage的)列表中有两个项——一个是所有空(nothing)属性,另一个是上面xml中的值

我通过添加

Where items.@id IsNot Nothing _
在选择新的myStorage之前,但我觉得我不应该这么做

我在C#中重新创建了这个,storage.xml与上面指定的完全相同

    private void Form1_Load(object sender, EventArgs e)
    {

    XDocument st;
    st = XDocument.Load("C:\\storage.xml");
   Object c = from items in st.Descendants()
                    select new {id = items.Attribute("id"), cityID = items.Attribute("cityID"), cityDatum = items.Attribute("cityDatum")};
    }
如果您无法复制这些结果,这里有一个屏幕截图:


从更新的代码示例中获取。当你说

st = XDocument.Load("C:\\storage.xml");
然后

st.Descendants()
您的
st
是文档,而不是根元素。因此,当您向它请求其
子体时,您将枚举2
XElement
s–此示例中的
节点和一个
节点。正是
items
节点为您提供了“空”项

有很多方法可以将自己限制在
节点上,这取决于您对xml结构的把握程度,例如

From item In st.Root.Elements("item") 

将仅枚举作为文档根元素的直接子元素的
节点。

我已经尝试过这一点(在C#中承认),并且在
存储
中只得到一个项,无论是否有
Where
子句。你能给我们展示一个简短但完整的程序(la)来演示这个问题吗?我已经用C#示例和截图扩展了这个问题,谢谢。我必须承认一个例外会很好,因为我在这件事上完全迷失了方向。
From item In st.Root.Elements("item")