<?xml version="1.0" encoding="GB2312"?>
<RESPONSE>
<A1>
<VERSION>2.0</VERSION>
<SRC>2000</SRC>
<ROUTE>00000</ROUTE>
<OBJ>3100</OBJ>
<RANGE>01</RANGE>
<FLAG>Y</FLAG>
</A1>
<B1>
<COMMAND>QUERY</COMMAND>
<VERSION>2.0</VERSION>
<DATA ID="04001">
<STATE>1/100</STATE>
<R>
<F MC="姓名" VALUE="张三" />
<F MC="曾用名" VALUE="小黑" />
<F MC="性别" VALUE="男" />
<F MC="民族" VALUE="汉" />
<F MC="出生日期" VALUE="19780820" />
<F MC="出生地" VALUE="青岛" />
<F MC="现籍" VALUE="大连" />
</R>
<R>
<F MC="姓名" VALUE="李四" />
<F MC="曾用名" VALUE="猪八戒" />
<F MC="性别" VALUE="男" />
<F MC="民族" VALUE="汉" />
<F MC="出生日期" VALUE="19790118" />
<F MC="出生地" VALUE="沈阳" />
<F MC="现籍" VALUE="沈阳" />
</R>
<R>
<F MC="姓名" VALUE="李红" />
<F MC="曾用名" VALUE="红玫瑰" />
<F MC="性别" VALUE="女" />
<F MC="民族" VALUE="汉" />
<F MC="出生日期" VALUE="19800625" />
<F MC="出生地" VALUE="北京" />
<F MC="现籍" VALUE="廊坊" />
</R>
</DATA>
</B1>
</RESPONSE>
上述XML格式本人没有读取的经验,请各路高手指点,我向把该XML读进Dataset,并绑定在datagrid中进行数据展示。最终的显示效果如下,请高手们指点迷津。谢谢!!!姓名 曾用名 性别 民族 出生日期 出生地 现籍
张三 小黑 男 汉 19780820 青岛 大连
李四 猪八戒 男 汉 19790118 沈阳 沈阳
李红 红玫瑰 女 汉 19800625 北京 廊坊
<RESPONSE>
<A1>
<VERSION>2.0</VERSION>
<SRC>2000</SRC>
<ROUTE>00000</ROUTE>
<OBJ>3100</OBJ>
<RANGE>01</RANGE>
<FLAG>Y</FLAG>
</A1>
<B1>
<COMMAND>QUERY</COMMAND>
<VERSION>2.0</VERSION>
<DATA ID="04001">
<STATE>1/100</STATE>
<R>
<F MC="姓名" VALUE="张三" />
<F MC="曾用名" VALUE="小黑" />
<F MC="性别" VALUE="男" />
<F MC="民族" VALUE="汉" />
<F MC="出生日期" VALUE="19780820" />
<F MC="出生地" VALUE="青岛" />
<F MC="现籍" VALUE="大连" />
</R>
<R>
<F MC="姓名" VALUE="李四" />
<F MC="曾用名" VALUE="猪八戒" />
<F MC="性别" VALUE="男" />
<F MC="民族" VALUE="汉" />
<F MC="出生日期" VALUE="19790118" />
<F MC="出生地" VALUE="沈阳" />
<F MC="现籍" VALUE="沈阳" />
</R>
<R>
<F MC="姓名" VALUE="李红" />
<F MC="曾用名" VALUE="红玫瑰" />
<F MC="性别" VALUE="女" />
<F MC="民族" VALUE="汉" />
<F MC="出生日期" VALUE="19800625" />
<F MC="出生地" VALUE="北京" />
<F MC="现籍" VALUE="廊坊" />
</R>
</DATA>
</B1>
</RESPONSE>
上述XML格式本人没有读取的经验,请各路高手指点,我向把该XML读进Dataset,并绑定在datagrid中进行数据展示。最终的显示效果如下,请高手们指点迷津。谢谢!!!姓名 曾用名 性别 民族 出生日期 出生地 现籍
张三 小黑 男 汉 19780820 青岛 大连
李四 猪八戒 男 汉 19790118 沈阳 沈阳
李红 红玫瑰 女 汉 19800625 北京 廊坊
public void XmlReaderTest()
{
XmlDocument document = new XmlDocument();
document.Load("article.xml"); //装载 xml 文件 XmlNodeReader reader = new XmlNodeReader(document); //快速读取 xml 文件 this.Show(); int depth = -1; //初始化缩进变量 while (reader.Read()) //while 循环,直到读取所有的 xml 文件内容
{
switch (reader.NodeType) //取得当前读取到的 xml 文件内容的类型
{
case XmlNodeType.Element: //如类型是元素
depth++;
TabOutput(depth); //缩进处理
consoleTextBox.Text += "<" + reader.Name + ">" + "\r\n"; //输出当前的元素名称
if (reader.IsEmptyElement)
depth--;
break; case XmlNodeType.Comment: //如类型是注释
TabOutput(depth);
consoleTextBox.Text += "<!--" + reader.Value + "-->\r\n";
break; case XmlNodeType.Text: //如类型是内容
TabOutput(depth);
consoleTextBox.Text += "\t" + reader.Value + "\r\n";
break;
case XmlNodeType.XmlDeclaration : //如类型是 xml 文件声明
TabOutput(depth);
consoleTextBox.Text += "<?" + reader.Name + reader.Value + "?> \r\n";
break; case XmlNodeType.EndElement: //如类型是元素结束标记
TabOutput(depth);
consoleTextBox.Text += "</" + reader.Name + "> \r\n";
depth--;
break;
}
} }
#endregion
#region 从源xml文档中 复制一个完整的 xml ,且画出 dcom 树
private void BuildTree(XmlNode xmlSourceNode,
XmlNode document, TreeNode treeNode)
{
XmlNodeReader nodeReader = new XmlNodeReader(xmlSourceNode); //创建一读取器 XmlNode currentNode = null; TreeNode newNode = new TreeNode(); XmlNodeType modifiedNodeType; //指定节点的类型 while (nodeReader.Read())
{
modifiedNodeType = nodeReader.NodeType; //取得当前节点的类型 if (modifiedNodeType == XmlNodeType.EndElement) //元素结束标记
modifiedNodeType = XmlNodeType.Element; //把 元素的首标记赋值 currentNode = copy.CreateNode(modifiedNodeType, nodeReader.Name, nodeReader.NamespaceURI); switch (nodeReader.NodeType)
{
case XmlNodeType .Text:
newNode.Text = nodeReader.Value;
treeNode.Nodes.Add(newNode);
((XmlText)currentNode).AppendData(nodeReader.Value);
document.AppendChild(currentNode);
break; case XmlNodeType .EndElement :
document = document.ParentNode;
treeNode = treeNode.Parent;
break; case XmlNodeType .Element :
if (!nodeReader.IsEmptyElement)
{
newNode.Text = nodeReader.Name;
treeNode.Nodes.Add(newNode); treeNode = newNode; document.AppendChild(currentNode);
document = document.LastChild;
}
else
{
newNode.Text = nodeReader.NodeType.ToString();
treeNode.Nodes.Add(newNode);
document.AppendChild(currentNode);
}
break; default :
newNode.Text = nodeReader.NodeType.ToString();
treeNode.Nodes.Add(newNode);
document.AppendChild(currentNode);
break;
}
newNode = new TreeNode(); }
xmlTreeView.ExpandAll();
xmlTreeView.Refresh();
}
#endregion
private void button3_Click(object sender, EventArgs e)
{
DataSet myDs = new DataSet(); try
{
FileStream fin;
fin = new FileStream("XMLFile1.xml", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
myDs.ReadXml(fin);
fin.Close();
}
catch (Exception ex)
{
textBox1.Text= ex.Message;
} //绑定修改前的XML
// PreData.DataSource = myDs.Tables[0].DefaultView; //指定数据源
// PreData.DataBind(); //绑定数据 //当DS当中增加新行
//在这里我们可以看到,其实原XML数据里面的属性,我们一样可以直接使用DataRow[]数组来得到,而不仅仅是节点
DataRow newRow = myDs.Tables[0].NewRow();
newRow["id"] = "3";
newRow["userName"] = "new user";
newRow["userPass"] = "new passwd";
myDs.Tables[0].Rows.Add(newRow); //将myDs的改变写入XML
try
{
FileStream dataOut;
dataOut = new FileStream("XMLFile1.xml", FileMode.Open, FileAccess.Write, FileShare.ReadWrite);
myDs.WriteXml(dataOut, XmlWriteMode.WriteSchema);
dataOut.Close();
}
catch (Exception ex)
{
textBox1.Text = ex.Message;
} //绑定修改后的XML
// NextData.DataSource = myDs.Tables[0].DefaultView; //指定数据源
// NextData.DataBind(); //绑定数据 myDs.Dispose();
}
}
在.net Framework 2.0中,使用XslCompiledTransform类取代了原来1.x中的XslTransform类
http://blog.csdn.net/zhzuo/archive/2006/04/19/669095.aspx
/// <summary>
/// 读取XML配置文件
/// </summary>
/// <param name="XMLPath">XML配置文件的路径</param>
/// <returns>返回的数据集</returns>
public static DataSet ReadXMLSetting(string XMLPath)
{
if(File.Exists(XMLPath) == false)
{
return null;
}
else
{
DataSet dsXML = new DataSet(); try
{
dsXML.ReadXml(XMLPath);
return dsXML;
}
catch
{
return null;
}
} }
#endregion