ASP.Net/XML/DOM

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

Traversing the DOM Tree

   <source lang="csharp">

<%@ Page Language="C#" %> <%@ Import Namespace="System.Xml" %> <script runat="server">

   void Page_Load(object sender, EventArgs e)
   {
       string xmlPath = MapPath("Books.xml");
       XmlDocument doc = new XmlDocument();
       //doc.Load(xmlPath);
       doc.LoadXml("<employees>" +
                   "<employee id="1">" +    
                   "<name><firstName>First Name</firstName>" + 
                   "<lastName>Last Name</lastName>" +                       
                   "</name><city>City</city>" +
                   "<state>WA</state><zipCode>99999</zipCode>" +
           "</employee></employees>");         
       XmlNode rootNode = doc.DocumentElement;        
       DisplayNodes(rootNode);        
   }
   void DisplayNodes(XmlNode node)
   {
       //Print the node type, node name and node value of the node
       if (node.NodeType == XmlNodeType.Text) {
           Response.Write("Type= [" + node.NodeType+ "] Value=" + node.Value + "
"); } else { Response.Write("Type= [" + node.NodeType+"] Name=" + node.Name + "
"); } //Print attributes of the node if (node.Attributes != null) { XmlAttributeCollection attrs = node.Attributes; foreach (XmlAttribute attr in attrs) { Response.Write("Attribute Name =" + attr.Name+ "Attribute Value =" + attr.Value); } } //Print individual children of the node XmlNodeList children = node.ChildNodes; foreach (XmlNode child in children) { DisplayNodes(child); } }

</script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server">

   <title>Traversing the DOM Tree</title>

</head> <body>

   <form id="form1" runat="server">
   </form>

</body> </html>

      </source>
   
  


Use XML Document (DOM) to select one Node

   <source lang="csharp">

<%@ Page Language="C#"%> <%@ Import Namespace="System.Xml" %> <%@ Import Namespace="System.Xml.Schema" %> <script runat="server">

   private StringBuilder stringBuilder = new StringBuilder();
   void Page_Load(object sender, EventArgs e)
   {
       string xmlPath = MapPath("Authors.xml");    
       string xsdPath = MapPath("Authors.xsd");
       XmlDocument xmlDoc = new XmlDocument();
       xmlDoc.Load(xmlPath);
       XmlElement authorElement = (XmlElement) xmlDoc.DocumentElement.SelectSingleNode("//authors/author[authorID="000-00-0001"]");
       authorElement.SetAttribute("nfex", "nfex");
       XmlNodeReader nodeReader = new XmlNodeReader(xmlDoc);
       XmlReader reader = null;        
       XmlReaderSettings settings = new XmlReaderSettings();
       settings.ValidationEventHandler += new ValidationEventHandler(this.ValidationEventHandler);
       settings.ValidationType = ValidationType.Schema;        
       settings.Schemas.Add(null, XmlReader.Create(xsdPath));
       reader = XmlReader.Create(nodeReader, settings);
       while (reader.Read()) 
       {            
       }
       if (stringBuilder.ToString() == String.Empty)
           Response.Write("Validation completed successfully.");
       else
           Response.Write("Validation Failed. 
" + stringBuilder.ToString()); } void ValidationEventHandler(object sender, ValidationEventArgs args) { stringBuilder.Append("Validation error: " + args.Message + "
"); }

</script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server">

   <title>DOM Validation</title>

</head> <body>

   <form id="form1" runat="server">
   </form>

</body> </html>

<%-- File: Authors.xml <?xml version="1.0"?> <authors>

 <author>
   <authorID>000-00-0001</authorID>
   <lastName>Nancy</lastName>
   <firstName>Lee</firstName>
   <phone>999 999-9999</phone>
   <address>9999 York St.</address>
   <city>Regina</city>
   <state>LA</state>
   <zip>99999</zip>
   <contract>true</contract>
 </author>
 <author>
   <authorID>000-00-0002</authorID>
   <lastName>First</lastName>
   <firstName>Last</firstName>
   <phone>415 986-7020</phone>
   <address>No Name St.</address>
   <city>Vancouver</city>
   <state>BC</state>
   <zip>88888</zip>
   <contract>true</contract>
 </author> 

</authors> --%>

<%-- File: Authors.xsd <?xml version="1.0" encoding="utf-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">

 <xs:element name="authors">
   <xs:complexType>
     <xs:sequence>
       <xs:element maxOccurs="unbounded" name="author">
         <xs:complexType>
           <xs:sequence>
             <xs:element name="authorID" type="xs:string" />
             <xs:element name="lastName" type="xs:string" />
             <xs:element name="firstName" type="xs:string" />
             <xs:element name="phone" type="xs:string" />
             <xs:element name="address" type="xs:string" />
             <xs:element name="city" type="xs:string" />
             <xs:element name="state" type="xs:string" />
             <xs:element name="zip" type="xs:unsignedInt" />
             <xs:element name="contract" type="xs:boolean" />
           </xs:sequence>
         </xs:complexType>
       </xs:element>
     </xs:sequence>
   </xs:complexType>
 </xs:element>

</xs:schema> --%>

      </source>