Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.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
Xml 如何使用名称空间创建linq查询。。。语法_Xml_Vb.net_Linq - Fatal编程技术网

Xml 如何使用名称空间创建linq查询。。。语法

Xml 如何使用名称空间创建linq查询。。。语法,xml,vb.net,linq,Xml,Vb.net,Linq,我不知道名称空间是如何工作的。我试图获取ss:Name=Datagrid的工作表,并从中获取Name=emailname的数据节点 XML 为了获得更清晰的语法,建议尝试下面所示的Linq到XML XPath扩展方法 更新1:如果XML文件不包含任何名称空间,那么下面的代码可以工作。研究一个考虑名称空间的解决方案。 Dim root = XElement.Load(xmlFile) Dim data = root.XPathSelectElements("Worksheet[@Name=""Da

我不知道名称空间是如何工作的。我试图获取ss:Name=Datagrid的工作表,并从中获取Name=emailname的数据节点

XML


为了获得更清晰的语法,建议尝试下面所示的Linq到XML XPath扩展方法

更新1:如果XML文件不包含任何名称空间,那么下面的代码可以工作。研究一个考虑名称空间的解决方案。

Dim root = XElement.Load(xmlFile)
Dim data = root.XPathSelectElements("Worksheet[@Name=""Datagrid""]/Table/Row/Cell/Data[@Name=""edata""]")

为了获得更清晰的语法,建议尝试下面所示的Linq到XML XPath扩展方法

更新1:如果XML文件不包含任何名称空间,那么下面的代码可以工作。研究一个考虑名称空间的解决方案。

Dim root = XElement.Load(xmlFile)
Dim data = root.XPathSelectElements("Worksheet[@Name=""Datagrid""]/Table/Row/Cell/Data[@Name=""edata""]")

使用文件顶部的Imports语句声明名称空间。然后您可以使用语法引用它们

所以

将为您提供由您提供的XML定义的名称空间

现在您可以访问…@x:FullRows,包括在LINQ查询中

VB.NET的这些XML功能在Microsoft文档中被称为

我已将您的XML粘贴到VS2008中,并确定您的问题在于XML标记(包括Axis中的属性)区分大小写:

选择工作表,其中ss:Name=Datagrid “Dim dg=根目录中的项目……”。。。。。。。。。。。。。。。。。。。。。。。 Dim dg=root..FirstOrDefaultFunctionw w.@ss:Name=Datagrid 如果dg什么都不是_ 未找到抛出新的ExceptionDataGrid 从wokrsheet…表格..行..数据中获取数据,其中=name=emailname非ss:name=emailname “尺寸数据=来自dg中的项目……”。。。。。。。。。。。。。。。。。。。。。。。 “以下两行都适用,但第二行回答了标题中的问题: 'Dim data=dg…FirstOrDefaultFunctiond d d.@Name=emailname Dim data=dg…FirstOrDefaultFunctiond d d.@Name=emailname 如果数据什么都不是,那么_ 未找到抛出新的Exceptionemailname Console.WriteLinedata..Value
使用文件顶部的Imports语句声明名称空间。然后您可以使用语法引用它们

所以

将为您提供由您提供的XML定义的名称空间

现在您可以访问…@x:FullRows,包括在LINQ查询中

VB.NET的这些XML功能在Microsoft文档中被称为

我已将您的XML粘贴到VS2008中,并确定您的问题在于XML标记(包括Axis中的属性)区分大小写:

选择工作表,其中ss:Name=Datagrid “Dim dg=根目录中的项目……”。。。。。。。。。。。。。。。。。。。。。。。 Dim dg=root..FirstOrDefaultFunctionw w.@ss:Name=Datagrid 如果dg什么都不是_ 未找到抛出新的ExceptionDataGrid 从wokrsheet…表格..行..数据中获取数据,其中=name=emailname非ss:name=emailname “尺寸数据=来自dg中的项目……”。。。。。。。。。。。。。。。。。。。。。。。 “以下两行都适用,但第二行回答了标题中的问题: 'Dim data=dg…FirstOrDefaultFunctiond d d.@Name=emailname Dim data=dg…FirstOrDefaultFunctiond d d.@Name=emailname 如果数据什么都不是,那么_ 未找到抛出新的Exceptionemailname Console.WriteLinedata..Value
嘿,你已经在使用这个语法项了。@ss:Name!那么我误解了你的问题了吗?我想是的,我正在尝试获取ss:Name=datagrid的数据网格,并从中获取Name=data而不是ss:Name=dataNote的节点注意默认名称空间xmlns与xmlns:ss相同,因此Name和ss:Name是相同的。@如果你没有注意到我的编辑,我相信你的思路是正确的,除了你需要正确的名称大小写之外。嘿,你已经在使用这个语法项了。@ss:Name!那么我误解了你的问题了吗?我想是的,我正在尝试获取ss:Name=datagrid的数据网格,并从中获取Name=data而不是ss:Name=dataNote的节点注意默认名称空间xmlns与xmlns:ss相同,因此Name和ss:Name是相同的。@如果你没有注意到我的编辑,我相信你的思路是正确的,除非你需要把名字的大小写正确。
Dim root = XElement.Load(xmlFile)
Dim data = root.XPathSelectElements("Worksheet[@Name=""Datagrid""]/Table/Row/Cell/Data[@Name=""edata""]")
Imports <xmlns="urn:schemas-microsoft-com:office:spreadsheet">
Imports <xmlns:o="urn:schemas-microsoft-com:office:office">
Imports <xmlns:x="urn:schemas-microsoft-com:office:excel">
Imports <xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">
Imports <xmlns:html="http://www.w3.org/TR/REC-html40">