使用VB.NET解析带元数据和数据行的XML,求解决方案
VB.NET解析含元数据的XML并绑定到GridView
解析思路
你的XML结构分为两部分:<METADATA>定义了所有字段名,<RECORD>下的<ROW>节点通过属性存储每行数据。我们可以用DataTable匹配这个结构——先从元数据提取列名,再遍历数据行填充内容,最后绑定到GridView。
完整代码实现
Imports System.Xml.Linq Imports System.Data Public Class XmlToGridViewHandler Sub ParseXmlAndBindToGridView() ' 加载XML文件(若为XML字符串,可改用XDocument.Parse(xmlContent)) Dim xmlDoc As XDocument = XDocument.Load("你的XML文件路径.xml") ' 创建DataTable存储解析后的数据 Dim dataTable As New DataTable() ' 从元数据提取字段名,添加为DataTable的列 Dim fieldNodes = xmlDoc.Descendants("FIELD") For Each fieldNode In fieldNodes Dim fieldName As String = fieldNode.Attribute("attrname").Value dataTable.Columns.Add(fieldName) Next ' 遍历所有数据行节点,填充DataTable Dim rowNodes = xmlDoc.Descendants("ROW") For Each rowNode In rowNodes Dim dataRow As DataRow = dataTable.NewRow() ' 遍历当前行的所有属性,匹配列名赋值 For Each attr In rowNode.Attributes() If dataTable.Columns.Contains(attr.Name.LocalName) Then dataRow(attr.Name.LocalName) = attr.Value End If Next dataTable.Rows.Add(dataRow) Next ' 将DataTable绑定到GridView GridView1.DataSource = dataTable GridView1.DataBind() End Sub End Class
代码说明
- XML加载:使用
XDocument加载文件或解析字符串,LINQ to XML语法简洁易维护。 - 列结构构建:从
<FIELD>节点的attrname属性提取列名,确保DataTable列与XML字段完全对应。 - 数据填充:遍历每个
<ROW>节点的属性,自动匹配DataTable列赋值,兼容XML中存在但元数据未定义的字段(会自动忽略)。 - GridView绑定:直接将DataTable设为数据源并执行绑定,自动生成表格列和数据行。
最终呈现效果
绑定后GridView会生成如下格式的表格(与你期望的一致):
| LAYBYE | TITLE | INITS | SURNAME | COMPANYNAME | EXPDATE | BALANCE | IDNUMBER | Cellphone |
|---|---|---|---|---|---|---|---|---|
| 1 | MR | J | DOE | 20190523 | 100 | 123 | 99999999 | |
| 1 | MRS | JJ | DOE | 20190701 | 500 | 456 | 888888 |
内容的提问来源于stack exchange,提问作者Henjane Pty Ltd
相关产品推荐
相关产品推荐

