ASP.NET Tutorial/XML/XMLNodeType

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

Check XMLNodeType (VB.net)

   <source lang="csharp">

<%@ 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("
") end if Case XMLNodeType.Text Response.Write(reader.Value & "
") 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></source>


Get Node by name

   <source lang="csharp">

<%@ 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">
   <asp:Literal id="XmlText" runat="server"></asp:Literal> 
   </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: ");
     string name = node.ChildNodes[0].Value;
     str.Append(name);
     str.Append("
"); 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("
"); } } } 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></source>


Read XML by node type

   <source lang="csharp">

<%@ 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">
   <asp:Literal id="XmlText" runat="server"></asp:Literal> 
   </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: ");
         str.Append(reader.Name);
         str.Append(" ");
         str.Append(reader.Value);
         str.Append("
"); break; case XmlNodeType.Element: str.Append("Element: "); str.Append(reader.Name); str.Append("
"); break; case XmlNodeType.Text: str.Append(" - Value: "); str.Append(reader.Value); str.Append("
"); break; case XmlNodeType.rument: str.Append("Comment: "); str.Append(reader.Value); str.Append("
"); break; } if (reader.AttributeCount > 0) { while (reader.MoveToNextAttribute()) { str.Append(" - Attribute: "); str.Append(reader.Name); str.Append(" Value: "); str.Append(reader.Value); str.Append("
"); } } } 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></source>