下面所写方法是在网络资料的基础上,经过自己的实验而得出的。
使用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_x("CRRNum")
-
xmlRow.AppendChild(xmlNode)
-
xmlNode = xmlReport.createElement_x("RequestedBy")
-
xmlRow.AppendChild(xmlNode)
-
xmlNode = xmlReport.createElement_x("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_x("ItemCode")
-
xmlRow.AppendChild(xmlNode)
-
xmlNode = xmlReport.createElement_x("ItemName")
-
xmlRow.AppendChild(xmlNode)
-
xmlNode = xmlReport.createElement_x("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对象,来充当根节点的角色。
|