Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.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.net序列化和反序列化xml文件_Xml_Vb.net_Serialization - Fatal编程技术网

尝试使用VB.net序列化和反序列化xml文件

尝试使用VB.net序列化和反序列化xml文件,xml,vb.net,serialization,Xml,Vb.net,Serialization,在我序列化xml文件之后,它应该是这样的,然后我想在vb.net中反序列化它。我是个编程行家。感谢您的帮助 <?xml version="1.0"?> <Countries> <Country> <CID>1</CID> <CountryName>India</CountryName> <States> <State> New Delhi </

在我序列化xml文件之后,它应该是这样的,然后我想在vb.net中反序列化它。我是个编程行家。感谢您的帮助

<?xml version="1.0"?>
<Countries>
  <Country>
    <CID>1</CID>
    <CountryName>India</CountryName>
    <States>
      <State> New Delhi </State>
      <State> Maharashtra </State>
      <State> Rajasthan </State>
    </States>
  </Country>
  <Country>
    <CID>2</CID>
    <CountryName>United States</CountryName>
    <States>
      <State> Washington </State>
      <State> Texas </State>
    </States>
  </Country>
  <Country>
    <CID>3</CID>
    <CountryName>Australia</CountryName>
    <States>
      <State> Queensland </State>
      <State> Victoria </State>
    </States>
  </Country>
</Countries>

1.
印度
新德里
马哈拉施特拉邦
拉贾斯坦邦
2.
美国
华盛顿
得克萨斯州
3.
澳大利亚
昆士兰
维多利亚

我建议您一定要研究XML序列化。可以在MSDN上找到很多信息(但也可以使用任何搜索引擎)。例如,在MSDN上:

如果您还没有任何代码,请参阅。我将保持对给定XML结构进行反序列化的简单性。可以为国家/地区创建简单的类定义,如下所示:

公共类国家
公共属性CID为整数
公共属性CountryName作为字符串
公共属性状态为列表(字符串)
公共分新()
状态=新列表(字符串)()
端接头
末级
现在,这还没有100%起作用。您必须帮助序列化对象使用状态列表。您可以(使用属性)注释
状态
,以便序列化程序知道每个项的名称不同(默认为
)。您可以使用


公营国家
公共属性CID为整数
公共属性CountryName作为字符串
公共属性状态为列表(字符串)
公共分新()
状态=新列表(字符串)()
端接头
末级
最后,用于反序列化。我想反序列化到一个
列表(国家)
,因为它显然是一个列表。(假设上述XML存储在文件“obj.XML”中。)

Dim序列化程序作为新的XmlSerializer(GetType(国家/地区列表)))
Dim反序列化为列表(国家/地区)=无
使用file=System.IO.file.OpenRead(“obj.xml”)
反序列化=DirectCast(序列化程序.反序列化(文件),列表(国家))
终端使用
现在我们仍然需要帮助序列化程序对象,因为否则它不知道如何反序列化给定的XML;因为它不能正确地确定根节点。我们可以在这里使用构造函数的重载,在这里我们可以说根节点是什么()

反序列化的最终代码是:

Dim序列化程序作为新的XmlSerializer(GetType(列表(国家)),新的XmlRootAttribute(“国家”))
Dim反序列化为列表(国家/地区)=无
使用file=System.IO.file.OpenRead(“obj.xml”)
反序列化=DirectCast(序列化程序.反序列化(文件),列表(国家))
终端使用
序列化代码(写入文件“obj.xml”):

Dim国家作为新列表(国家)()
'确保将国家/地区添加到列表中
Dim序列化程序作为新的XmlSerializer(GetType(列表(国家)),新的XmlRootAttribute(“国家”))
使用文件作为System.IO.FileStream=System.IO.file.Open(“obj.xml”,IO.FileMode.OpenOrCreate,IO.FileAccess.Write)
serializer.Serialize(文件,国家/地区)
终端使用

所有这些都可以通过搜索和阅读文档很容易地找到。

您应该从这里开始,目的是保存一些数据并重新加载或将数据导出到给定的文件布局?您是否有需要像这样序列化的数据结构?请分享一些VB.NET代码。您需要序列化并反序列化此XML吗?@neolik我需要一个类结构,该类结构将被序列化到上述XML文件中,并反序列化XML以返回原始类结构。我发现很难找到started@subhrendu看看我的答案,它会让你开始。。。