下面所写方法是在网络资料的基础上,经过自己的实验而得出的。
使用VB.Net创建XML文件有两种方法,下面逐一介绍:
假设要创建如下的XML文件:
- <?xml version="1.0" encoding="UTF-8"?>
- <root>
- <Header>
- <row>
- <CRRNum/>
- <RequestedBy/>
- <CustomerNum/>
- </row>
- </Header>
- <Details>
- <row>
- <ItemCode />
- <ItemName />
- <SerialNum />
- <Warehouse />
- </row>
- </Details>
- </root>
方法1:
首先声明一个XmlDocument对象:
- Dim xmlReport As XmlDocument
- xmlReport = New XmlDocument
其次通过XmlDocument.LoadXML来获得这个XML的初始结构,包括:Version,Encoding和根节点:
- xmlReport.LoadXML("<?xml version=""1.0"" encoding=""UTF-8""?><root/>")
这样xmlReport就获得了初始结构了。剩下的工作就是要声明XmlNode对象,逐级的使用XmlNode.AppendChild方法将各个节点串接起来,具体的程序如下:
- Dim xmlNode As XmlNode
- Dim xmlHeader As XmlNode
- Dim xmlDetail As XmlNode
- Dim xmlRow As XmlNode
- xmlHeader = xmlReport.CreateNode(XmlNodeType.Element, "Header", "")
- xmlRow = xmlReport.CreateNode(XmlNodeType.Element, "row", "")
- xmlNode = xmlReport.CreateElement("CRRNum")
- xmlRow.AppendChild(xmlNode)
- xmlNode = xmlReport.CreateElement("RequestedBy")
- xmlRow.AppendChild(xmlNode)
- xmlNode = xmlReport.CreateElement("CustomerNum")
- xmlRow.AppendChild(xmlNode)
- xmlHeader.AppendChild(xmlRow)
- xmlRoot.AppendChild(xmlHeader)
- xmlDetail = xmlReport.CreateNode(XmlNodeType.Element, "Details", "")
- xmlRow = xmlReport.CreateNode(XmlNodeType.Element, "row", "")
- xmlNode = xmlReport.CreateElement("ItemCode")
- xmlRow.AppendChild(xmlNode)
- xmlNode = xmlReport.CreateElement("ItemName")
- xmlRow.AppendChild(xmlNode)
- xmlNode = xmlReport.CreateElement("SerialNum")
- xmlRow.AppendChild(xmlNode)
- xmlDetail.AppendChild(xmlRow)
- xmlRoot.AppendChild(xmlDetail)
- xmlReport.AppendChild(xmlRoot)
方法2:
与方法一的主要区别就是,完全使用XML命名空间中的对象来创建,我本人更倾向于这种方法。
首先,声明一个XmlDocument对象,同方法一。
其次,声明一个XmlDeclaration对象:
- Dim XmlDeclaration As XmlDeclaration
初始化这个XmlDeclaration对象:
- XmlDeclaration = xmlReport.CreateXmlDeclaration("1.0", "", "")
- XmlDeclaration.Encoding = "UTF-8"
剩下的操作同样是创建XmlNode,方法同方法一。但是此时这个XML是没有跟节点的,因此还需要一个额外的XMLNode对象,来充当根节点的角色。