ASP.NET Tutorial/XML/XMLNodeType

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Check XMLNodeType (VB.net)

<%@ Import Namespace="System.Xml" %>
<script language="VB" runat=server>
   sub Page_Load(Sender as Object, e as EventArgs)
      dim reader as XMLTextReader
      dim i as integer
      dim curPrice as Decimal
      
      try
         reader = new XMLTextReader(Server.MapPath("Data.xml"))
         
         While reader.Read()
            Select Case reader.NodeType
               Case XMLNodeType.Element
                  if reader.HasAttributes then
                     for i = 0 to reader.AttributeCount - 1
                        Response.Write(reader.GetAttribute(i) & " ")
                     next
                     Response.Write("<br>")
                  end if
               Case XMLNodeType.Text
                  Response.Write(reader.Value & "<br>")
            End Select
         End While
      catch ex as Exception
         Response.Write("Error accessing XML file")
      finally
         reader.close
      end try
   
   end sub
</script>
<html>
<body>
</body>
</html>
File: Data.xml
<?xml version="1.0"?>
<bookstore>
  <book genre="asdf">
    <title>asdf</title>
    <author>
      <first-name>asdf</first-name>
      <last-name>asdf</last-name>
    </author>
    <price>asdf</price>
  </book>
  <book genre="asdf">
    <title>asdf</title>
    <author>
      <first-name>asdf</first-name>
      <last-name>asdf</last-name>
    </author>
    <price>asdf</price>
  </book>
  <book genre="asdf">
    <title>asdf</title>
    <author>
      <first-name>asdf</first-name>
      <last-name>asdf</last-name>
    </author>
    <price>asdf</price>
  </book>
</bookstore>


Get Node by name

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Search" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <asp:Literal id="XmlText" runat="server"></asp:Literal>&nbsp;
    </div>
    </form>
</body>
</html>
File: Default.aspx.cs
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.Text;
public partial class Search : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    string xmlFile = Server.MapPath("Data.xml");
    XmlDocument doc = new XmlDocument();
    doc.Load(xmlFile);
    StringBuilder str = new StringBuilder();
    XmlNodeList nodes = doc.GetElementsByTagName("Title");
    foreach (XmlNode node in nodes)
    {
      str.Append("Found: <b>");
      string name = node.ChildNodes[0].Value;
      str.Append(name);
      str.Append("</b><br>");
      if (name == "star 1")
      {
        XmlNode parent = node.ParentNode;
        XmlNodeList childNodes = ((XmlElement)parent).GetElementsByTagName("Star");
        foreach (XmlNode childNode in childNodes)
        {
          str.Append("Found Star: ");
          str.Append(childNode.ChildNodes[0].Value);
          str.Append("<br>");
        }
      }
    }
    XmlText.Text = str.ToString();
    }
}
File: Data.xml
<?xml version="1.0"?>
<DvdList>
   <DVD ID="1" Category="Category 1">
      <Title>title 1</Title>
      <Director>directory 2</Director>
      <Price>1</Price>
      <Starring>
         <Star>star 1</Star>
         <Star>star 2</Star>
      </Starring>
   </DVD>
</DvdList>


Read XML by node type

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="WriteAndReadXml" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <asp:Literal id="XmlText" runat="server"></asp:Literal>&nbsp;
    </div>
    </form>
</body>
</html>
File: Default.aspx.cs
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.Text;
public partial class WriteAndReadXml : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    string xmlFile = Server.MapPath("Data.xml");
    XmlTextReader reader = new XmlTextReader(xmlFile);
    StringBuilder str = new StringBuilder();
    while (reader.Read())
    {
      switch (reader.NodeType)
      {
        case XmlNodeType.XmlDeclaration:
          str.Append("XML Declaration: <b>");
          str.Append(reader.Name);
          str.Append(" ");
          str.Append(reader.Value);
          str.Append("</b><br>");
          break;
        case XmlNodeType.Element:
          str.Append("Element: <b>");
          str.Append(reader.Name);
          str.Append("</b><br>");
          break;
        case XmlNodeType.Text:
          str.Append(" - Value: <b>");
          str.Append(reader.Value);
          str.Append("</b><br>");
          break;
        case XmlNodeType.rument:
          str.Append("Comment: <b>");
          str.Append(reader.Value);
          str.Append("</b><br>");
          break;
      }
      if (reader.AttributeCount > 0)
      {
        while (reader.MoveToNextAttribute())
        {
          str.Append(" - Attribute: <b>");
          str.Append(reader.Name);
          str.Append("</b> Value: <b>");
          str.Append(reader.Value);
          str.Append("</b><br>");
        }
      }
    }
    reader.Close();
    XmlText.Text = str.ToString();
  }
}
File: Data.xml
<?xml version="1.0"?>
<DvdList>
   <DVD ID="1" Category="Category 1">
      <Title>title 1</Title>
      <Director>directory 2</Director>
      <Price>1</Price>
      <Starring>
         <Star>star 1</Star>
         <Star>star 2</Star>
      </Starring>
   </DVD>
   <DVD ID="2" Category="Category 2">
      <Title>title 2</Title>
      <Director>directory 2</Director>
      <Price>2</Price>
      <Starring>
         <Star>star 3</Star>
         <Star>star 4</Star>
      </Starring>
   </DVD>
</DvdList>