⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xmlreader.aspx

📁 C#开发者可使用的经典案例集,源自于ASP.NET经典范例50讲
💻 ASPX
字号:
<%@ Import Namespace="System.Xml" %>
<%@ Import Namespace="System.Data" %>
<html>
  <head>
  <title>XmlReader Demo</title>

  <style>
    .expandable { text-decoration:underline; cursor:hand; }
  </style>

  <script language="JavaScript">
  function OnToggleTOCLevel1()
  {
    var elemSrc = window.event.srcElement;
    var elemLevel2 = document.all(elemSrc.level2ID);

    if (elemLevel2.style.display == 'none')
      elemLevel2.style.display = '';
    else
      elemLevel2.style.display = 'none';
  }
  </script>

  <script language="C#" runat="server">
  public int i = 0;
  class Node
  {
    public string Name;
    public string Text;
    public Node Parent;
    public ArrayList ChildrenNodes;
    public Node()
    {
      ChildrenNodes = new ArrayList();
      Text = "";
    }
  }
  Node ReadXmlToNode(string file)
  {
    Node topNode = null;
    Node currentNode = topNode;

    XmlTextReader reader = new XmlTextReader(file);
    try
    {
      while(reader.Read())
      {
        switch(reader.NodeType)
        {
          case XmlNodeType.Element:
            if(topNode != null)
            {
              //Check if current node is empty
              if(currentNode == null)
                throw(new XmlException("Bad Xml.", null));

              // Create new node and add it to current node
              Node newNode = new Node();
              currentNode.ChildrenNodes.Add(newNode);

              // Set new node attribute
              newNode.Name = reader.Name;
              newNode.Parent = currentNode;

              // swap current node
              currentNode = newNode;
            }
            else
            {
              topNode = new Node();
              topNode.Parent = null;
              topNode.Name = reader.Name;
              currentNode = topNode;
            }
            break;

          case XmlNodeType.EndElement:
            currentNode = currentNode.Parent;
            break;

          case XmlNodeType.Text:
            currentNode.Text = reader.Value;
            break;
        }
      }
      if(currentNode != null)
        throw(new XmlException("Bad Xml.", null));
    }
    catch(XmlException e)
    {
      Response.Write(e.ToString());
      return null;
    }
    finally
    {
      reader.Close();
    }
    return topNode;
  }

  string ShowNode(Node node)
  {
    string childrenName = node.Name + "children" + i.ToString();
    i++;

    // Add start marker
    string nodeString = "";
    nodeString += "<div class=expandable onclick=\"OnToggleTOCLevel1()\"";
    nodeString += " level2ID=\"" + childrenName + "\">";
    nodeString += node.Name;
    nodeString += (node.Text == "")? "" : ":" + node.Text;
    nodeString += "</div>\n";
    nodeString += "<div id=\"" + childrenName + "\" style=\"display: none;\">";
    nodeString += "\n<ol>";

    // Iterate the child node collection
    foreach(Node child in node.ChildrenNodes)
      nodeString += "<li>" + ShowNode(child) + "</li>\n";
    
    // Add end marker
    nodeString += "</ol></div>";
    return nodeString;
  }

  void Page_Load()
  {
    Node topNode = ReadXmlToNode(Server.MapPath("example.xml"));
    Text1.Text = ShowNode(topNode);
  }

  </script>
  </head>
  <body>
    <form id="form1" runat="server">
      <asp:Literal id="Text1" runat="server" />
    </form>
  </body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -