您的位置:首页 > 移动开发

ASPX 如何读取 AppData 目录下面的XML (C#实现)

2012-01-17 10:59 429 查看
XML中配置了一些学生基本信息。文件放在 App_Data 目录下面。文件名:Mytest.xml

<?xml version="1.0" encoding="utf-8"?>
<class>
  <student>
    <name>羞花猫</name>
    <age>12</age>
    <sex>男</sex>
  </student>
  <student>
    <name>花儿</name>
    <age>11</age>
    <sex>女</sex>
  </student>
  <student>
    <name>月亮</name>
    <age>13</age>
    <sex>女</sex>
  </student>
</class>


现在想在aspx.cs 文件里面读取到这个XML,可以通过以下代码实现。

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml;
using System.Xml.XPath;
using System.IO;

namespace WebApplication1
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            XmlDocument xmlDoc;
            // 取得XML文件所在绝对路径
            string filePath = HttpContext.Current.Request.MapPath("~/App_Data/Menu/MyTest.xml");

            if (File.Exists(filePath))
            {
                xmlDoc = new XmlDocument();
                // 读取文件
                xmlDoc.Load(filePath);

                // XPathNavigator生成
                XPathNavigator xnavi = xmlDoc.CreateNavigator();

                XPathNodeIterator xnitrFinds;

                xnitrFinds = xnavi.Select("class/student");

                if (xnitrFinds != null)
                {
                    XmlElement xeltFind;

                    while (xnitrFinds.MoveNext())
                    {
                        xeltFind = ((IHasXmlNode)xnitrFinds.Current).GetNode() as XmlElement;

                        for (int i = 0; i < xeltFind.ChildNodes.Count; i++)
                        {
                            if (xeltFind.ChildNodes[i].NodeType == XmlNodeType.Element)
                            {
                                // this.showXml是aspx定义的一个标签,这个可以注释调不要
                                // <div id="showXml" runat="server"></div>
                                // xeltFind.ChildNodes[i].Name 就是节点的名字
                                // xeltFind.ChildNodes[i].InnerText 就是节点的内容
                                this.showXml.InnerHtml += xeltFind.ChildNodes[i].Name + "=" + xeltFind.ChildNodes[i].InnerText + "<br>";
                            }
                        }
                    }
                }
            }
        }
    }
}


最后结果(画面表示)

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐