using System;using System.IO;using System.Xml;
//XmlNode.NextSibling 属性 作用:获取紧接在该节点之后的节点。属性值:下一个 XmlNode。如果没有下一个节点,则返回 空引用(在 Visual Basic 中为 Nothing)。 //public virtual XmlNode FirstChild { get; }
public class Sample{
public static void Main() {
XmlDocument doc = new XmlDocument(); doc.Load(@"C:/Documents and Settings/Administrator/My Documents/Visual Studio 2005/Projects/XMLFile1.xml");//把XML文档装入内存 //XmlDocument.DocumentElement属性返回一个XmlElement类的实例,表示XmlElement的根节点 XmlNode currNode = doc.DocumentElement.FirstChild;//public virtual XmlNode FirstChild { get; } Console.WriteLine("First book..."); //该属性返回一个XmlNode对象(或者实例) Console.WriteLine(currNode.OuterXml);
XmlNode nextNode = currNode.NextSibling; //XmlNode nextNode = doc.DocumentElement.NextSibling;这样写会产生异常 Console.WriteLine("/r/nSecond book..."); Console.WriteLine(nextNode.OuterXml);
Console.WriteLine(); Console.WriteLine(doc.DocumentElement.OuterXml);//根也是节点,所以也会把根节点也打印出来
Console.WriteLine(); Console.WriteLine(doc.OuterXml);//说明doc对象相当于整个XML文档,所以此时会全部打印出来
Console.WriteLine(); Console.WriteLine(doc.FirstChild.OuterXml); //因为doc对象相当于整个XML文档
Console.WriteLine(); Console.WriteLine(doc.LastChild.OuterXml); //因为doc对象相当于整个XML文档 }}
//XmlDocument.DocumentElement 属性 作用:获取文档的根 XmlElement。属性值:表示 XML 文档树的根的 XmlElement。如果不存在根,则返回 空引用(在 Visual Basic 中为 Nothing)。 //public XmlElement DocumentElement { get; }
//public class Sample//{// public static void Main()// {// //Create the XmlDocument.// XmlDocument doc = new XmlDocument();
// //用指定的字符串加载XML文档// doc.LoadXml("<?xml version='1.0' ?>" +// "<book genre='novel' ISBN='1-861001-57-5'>" +// "<title>Pride And Prejudice</title>" +// "</book>");
// //Display the document element.// Console.WriteLine(doc.DocumentElement.OuterXml);// }//}
//XmlNode.FirstChild 属性 作用:获取节点的第一个子级。属性值:节点的第一个子级。如果没有这样的节点,则返回 空引用(在 Visual Basic 中为 Nothing)。//public virtual XmlNode FirstChild { get; }
//public class Sample//{
// public static void Main()// {
// XmlDocument doc = new XmlDocument();// doc.LoadXml("<book ISBN='1-861001-57-5'>" +// "<title>Pride And Prejudice</title>" +// "<price>19.95</price>" +// "</book>");
// XmlNode root = doc.FirstChild; //root {Element, Name="book"} System.Xml.XmlNode {System.Xml.XmlElement}// //XmlNode root = doc.DocumentElement.FirstChild;//root {Element, Name="title"} System.Xml.XmlNode {System.Xml.XmlElement}
// Console.WriteLine("Display the title element...");
// Console.WriteLine(root.FirstChild.OuterXml);// //Console.WriteLine(root.OuterXml);
// Console.WriteLine(doc.OuterXml);//打印全部// Console.ReadKey();// }//}
//XmlNode.OuterXml 属性 作用:获取表示此节点及其所有子节点的标记。属性值:包含此节点及其所有子节点的标记。//public virtual string OuterXml { get; }
//public class Sample//{
// public static void Main()// {
// XmlDocument doc = new XmlDocument();// doc.LoadXml("<book genre='novel' ISBN='1-861001-57-5'>" +// "<title>Pride And Prejudice</title>" +// "</book>");
// XmlNode root = doc.DocumentElement;
// // OuterXml includes the markup of current node.// Console.WriteLine("Display the OuterXml property...");// Console.WriteLine(root.OuterXml);//XmlNode.OuterXml属性的作用:获取表示此节点及其所有子节点的标记
// // InnerXml does not include the markup of the current node.// // As a result, the attributes are not displayed.// Console.WriteLine();// Console.WriteLine("Display the InnerXml property...");// Console.WriteLine(root.InnerXml);//XmlNode.InnerXml属性的作用:获取和设置仅代表该节点的子节点的标记
// }//}
//XmlNode.LastChild 属性 作用:获取节点的最后一个子级。 属性值:节点的最后一个子级。如果没有这样的节点,则返回 空引用(在 Visual Basic 中为 Nothing)。 //public virtual XmlNode LastChild { get; }
//public class Sample {
// public static void Main() {
// XmlDocument doc = new XmlDocument();// doc.LoadXml("<book ISBN='1-861001-57-5'>" +// "<title>Pride And Prejudice</title>" +// "<price>19.95</price>" +// "</book>");
// XmlNode root = doc.FirstChild;
// Console.WriteLine("Display the price element...");// Console.WriteLine(root.LastChild.OuterXml);// }//}
//XmlText.Value 属性 作用:获取或设置节点的值。XmlDocument和XmlElement类都没有重写此属性//public override string Value { get; set; }// 它是重写XmlNode类的XmlNode.Value属性 public virtual string Value { get; set; }
//XmlNode.Name 属性 作用:当在派生类中被重写时,获取节点的限定名。属性值:节点的限定名。返回的名称取决于节点的 NodeType: //public abstract string Name { get; } 这个属性是抽象属性,只能被重写//XmlDocument、XmlElement、XmlText这三个类都重写了此属性
//public abstract class XmlNode : ICloneable, IEnumerable, IXPathNavigable//public abstract class XmlLinkedNode : XmlNode//public class XmlElement : XmlLinkedNode//说明XmlElement类也派生自XmlNode
//public abstract class XmlNode : ICloneable, IEnumerable, IXPathNavigable//public class XmlDocument : XmlNode//说明XmlDocument类的基类是XmlNode类
//public abstract class XmlNode : ICloneable, IEnumerable, IXPathNavigable//public abstract class XmlLinkedNode : XmlNode//public abstract class XmlCharacterData : XmlLinkedNode//public class XmlText : XmlCharacterData//说明XmlText类也派生自XmlNode
//XmlElement类重写(public override XmlNode NextSibling { get; })了XmlNode类的NextSibling属性,但没重写XmlNode.FirstChild属性和XmlNode.LastChild 属性 //XmlDocument类和XmlText类都没重写XmlNode.FirstChild属性、XmlNode.LastChild属性、XmlNode.NextSibling属性//但这三个属性都是虚拟的,所以可以继承,所以这三个虚拟属性都可以继承使用
//XmlDocument、XmlElement、XmlText这三个类都继承了XmlNode.OuterXml属性,所以可以直接用
XMLFile1.xml
<?xml version="1.0" encoding="utf-8"?><stories> <story> <title>A House in Aungier Street</title> <author> <name>Sheridan Le Fanu</name> <nationality>Irish</nationality> </author> <rating>eerie</rating> </story> <story> <title>The Signalman</title> <author> <name>Charles Dickens</name> <nationality>English</nationality> </author> <rating>atmospheric</rating> </story> <story> <title>The Turn ofthe Screw</title> <author> <name>Henry James</name> <nationality>American</nationality> </author> <rating>a bit dull</rating> </story> <story> <title>lannanzaixian</title> <author> <name>litao</name> <nationality>China</nationality> </author> <rating>exciting</rating> </story></stories>