Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.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
VB中XML到对象的转换_Xml_Vb.net_Object_Serialization_Deserialization - Fatal编程技术网

VB中XML到对象的转换

VB中XML到对象的转换,xml,vb.net,object,serialization,deserialization,Xml,Vb.net,Object,Serialization,Deserialization,我想做的是获取任何给定的.xml文件,并将其转换为VB代码中的对象。我的程序将从网站上获取一个.xml文件,并将其更改为一个对象。然后,我将对这些从.xml文件创建的对象运行查询。然后将这些查询输出到数据网格 问题是我知道如何使用一个特定的.xml文件来完成所有这些。我只是将对.xml文件中字段的引用更改为对象。但是,当涉及到更改任何可以由具有许多不同字段的用户上传的.xml时,我就不知所措了 还有其他方法吗?您可以使用System.XML和System.Reflection.Emit名称空间编

我想做的是获取任何给定的.xml文件,并将其转换为VB代码中的对象。我的程序将从网站上获取一个.xml文件,并将其更改为一个对象。然后,我将对这些从.xml文件创建的对象运行查询。然后将这些查询输出到数据网格

问题是我知道如何使用一个特定的.xml文件来完成所有这些。我只是将对.xml文件中字段的引用更改为对象。但是,当涉及到更改任何可以由具有许多不同字段的用户上传的.xml时,我就不知所措了


还有其他方法吗?

您可以使用
System.XML
System.Reflection.Emit
名称空间编写一个XML编译器

但您仍将面临查询对象的挑战,这些对象的结构直到运行时才知道

更好的选择可能是将xml加载到
XmlDocument
中,然后对它们运行XPath或LINQ查询。考虑到对象的Hisenburgian性质,XPath最有可能

Dim tDoc as XmlDocument = New XmlDocument
Dim tNodes As XmlNodeList = Nothing

tDoc.Load(file_path)
tNodes = tDoc.SelectNodes("xpath query goes here")
For Each tNode As XmlNode In tNodes
  ' Do something with the Node
Next

您可以使用
System.XML
System.Reflection.Emit
名称空间编写XML编译器

但您仍将面临查询对象的挑战,这些对象的结构直到运行时才知道

更好的选择可能是将xml加载到
XmlDocument
中,然后对它们运行XPath或LINQ查询。考虑到对象的Hisenburgian性质,XPath最有可能

Dim tDoc as XmlDocument = New XmlDocument
Dim tNodes As XmlNodeList = Nothing

tDoc.Load(file_path)
tNodes = tDoc.SelectNodes("xpath query goes here")
For Each tNode As XmlNode In tNodes
  ' Do something with the Node
Next

您不能将任意XML转换为任意对象,然后对其进行查询。您可以做的是将XML作为“XML”数据类型存储到SQL Server数据库中,然后对其执行XQuery查询。XML列甚至可以有索引来提高性能。@JohnSaunders:SQL Server在这里似乎有些过火了,是吗?XPath与XmlDocument的对比似乎是一个开始——根据需求/性能需求进入SQL Server。如果XPath查询足够,那么我将使用LINQ到XML和XPath,或者可能只是LINQ到XML。如果需要XQuery,那么我不认为SQLServerExpress有多过分。您不能将任意XML转换为任意对象,然后对其进行查询。您可以做的是将XML作为“XML”数据类型存储到SQL Server数据库中,然后对其执行XQuery查询。XML列甚至可以有索引来提高性能。@JohnSaunders:SQL Server在这里似乎有些过火了,是吗?XPath与XmlDocument的对比似乎是一个开始——根据需求/性能需求进入SQL Server。如果XPath查询足够,那么我将使用LINQ到XML和XPath,或者可能只是LINQ到XML。如果需要XQuery,那么我不认为SQL Server Express有多过分。任何xpath示例都是有用的,尝试让它运行起来,但让它读取任何xml文件似乎是一件让我头疼的事。任何xpath示例都是有用的,尝试让它运行起来,但让它读取任何xml文件似乎是一件让我头疼的事。