ASP.NET XmlDocument類詳解(2)_.Net教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:asp.net通過配置文件連接Access的方法
      本文實例講述了asp.net通過配置文件連接Access的方法。分享給大家供大家參考。具體分析如下: 這里數據庫blog.mdb存放在App_Data中 配置文件 ? cs 中 調用: ? 希望本文所述對大家的asp.net程序設計有所幫助。

        Normalize              將此 XmlNode 下子樹完全深度中的所有 XmlText 節點都轉換成“正常”形式,在這種形式中只有標記(即標記、注釋、處理指令、                    CDATA 節和實體引用)分隔 XmlText 節點,也就是說,沒有相鄰的 XmlText 節點。 (繼承自 XmlNode。)

        PrependChild             將指定的節點添加到該節點的子節點列表的開頭。 (繼承自 XmlNode。)

        ReadNode              根據 XmlReader 中的信息創建一個 XmlNode 對象。讀取器必須定位在節點或屬性上。

        RemoveAll              移除當前節點的所有子節點和/或屬性。 (繼承自 XmlNode。)

        RemoveChild             移除指定的子節點。 (繼承自 XmlNode。)

        ReplaceChild             用 newChild 節點替換子節點 oldChild。 (繼承自 XmlNode。)

        Save                 已重載。 將 XML 文檔保存到指定的位置。

        SelectNodes             已重載。

        SelectSingleNode           已重載。

        Supports               測試 DOM 實現是否實現特定的功能。 (繼承自 XmlNode。)

        Validate               已重載。 驗證 XmlDocument 是不是 Schemas 屬性中包含的 XML 架構定義語言 (XSD) 架構。

        WriteContentTo           將 XmlDocument 節點的所有子級保存到指定的 XmlWriter 中。 (重寫 XmlNode..::.WriteContentTo(XmlWriter)。)

        WriteTo               將 XmlDocument 節點保存到指定的 XmlWriter。 (重寫 XmlNode..::.WriteTo(XmlWriter)。)

        三、事件

        NodeChanged        當屬于該文檔的節點的 Value 已被更改時發生。

        NodeChanging       當屬于該文檔的節點的 Value 將被更改時發生。

        NodeInserted        當屬于該文檔的節點已被插入另一個節點時發生。

        NodeInserting        當屬于該文檔的節點將被插入另一個節點時發生。

        NodeRemoved        當屬于該文檔的節點已被從其父級移除時發生。

        NodeRemoving       當屬于該文檔的節點將被從文檔中移除時發生。

        助記屬性:

        PreviousSibling  上一個兄弟節點

        NextSibling    下一個兄弟節點

        FirstChild     第一個子節點

        LastChild     最后一個子節點

        ChildNodes    子節點集合

        ParentNode    父節點

        代碼示例:

        xml文檔:

         代碼如下:

        

        

       

        張三

        12000

      <price>42

        

       

        代碼:

        代碼如下:

        static void Main(string[] args)

        {

        XmlDocument doc = new XmlDocument();

        doc.Load(@"C:\Users\Administrator\Desktop\ConsoleApplication1\ConsoleApplication1\Test.xml");

        //先獲取一個唯一的Article節點,再獲取其下的第一個子節點 然后再獲取該節點下的屬性集合

        XmlAttributeCollection xc = doc.SelectSingleNode("Article").FirstChild.Attributes;

        string age = xc[0].Value; //不過是一個定制的集合罷了,還是集合那套東西 //string age = xc["age"].Value; 支持兩種索引訪問

        Console.WriteLine(age); //輸出30

        string baseuri = doc.SelectSingleNode("Article").FirstChild.BaseURI;

        Console.WriteLine(baseuri); //輸出 file:///C:\Users\Administrator\Desktop\ConsoleApplication1\ConsoleApplication1\Test.xml

        XmlNodeList listNode = doc.SelectSingleNode("Article").ChildNodes; //獲取Article節點下的所有節點列表

        for (int i = 0; i < listNode.Count;i++ ) //XmlNodeList不支持foreach遍歷,只能用for

        {

        Console.Write(listNode[i].Name + " : " + listNode[i].InnerText); //輸出 author:張三 length:12000 price:30 Name獲取的是限定名,也就是標記名稱

        }

        XmlElement xe = doc.DocumentElement; //獲取根節點

        Console.WriteLine(xe.Name); //輸出 Article

        //XmlDocumentType xdt = doc.DocumentType; //獲取包含 DOCTYPE 聲明的節點。應該是由DTD限定的節點。

        //Console.Write(xdt.Name); //此處報 未將對象引用設置到對象的實例,因為找不到有DOCTYPE聲明的元素

        Console.WriteLine(doc.HasChildNodes); //輸出 True 當前Document是否包含子節點。

        //XmlImplementation xi = doc.Implementation; //不懂怎么用

        //xi.ToString();

        Console.WriteLine(doc.InnerText); //獲取當前文檔的內容 輸出 張三 12000 30

        Console.WriteLine(doc.InnerXml); //輸出 整個Xml文件的字符串內容

        Console.WriteLine(doc.IsReadOnly); //獲取當前文檔是否是只讀的。輸出 False

        XmlNode node = doc.LastChild;

        Console.WriteLine(node.InnerText); //輸出 張三 12000 30 因為最后一個節點是Article節點,輸出Article節點的所有內容

        Console.WriteLine(doc.LocalName); //輸出 #document

        Console.WriteLine(doc.SelectSingleNode("Article").Name); //輸出Article

        Console.WriteLine(doc.SelectSingleNode("Article").FirstChild.NextSibling.Name); //length author的下一個兄弟節點 是length

        XmlNodeType xnt = doc.SelectSingleNode("Article").NodeType;

        Console.WriteLine(xnt); //輸出Element,表明該節點是元素節點

        string str = doc.SelectSingleNode("Article").OuterXml; //此節點及其所有自己點標記,輸出Article節點的所有內容

      省略...

       

        Console.WriteLine(str);

        XmlDocument x = new XmlDocument();

        x.LoadXml(str);

        Console.WriteLine(doc.SelectSingleNode("Article").OwnerDocument); //獲取該節點所屬的XmlDocument

        XmlNode xn = doc.SelectSingleNode("Article").LastChild.ParentNode; //ParentNode獲取直接父節點。

        Console.WriteLine(xn.Name); //輸出 Article

        Console.WriteLine(doc.PreserveWhitespace); //是否保留空白 輸出False

        XmlNode xn1 = doc.SelectSingleNode("Article").LastChild.PreviousSibling;

        Console.WriteLine(xn1.Name); //輸出length 的確是最后一個節點的前一個節點。

        Console.ReadKey();

        }

        為了更加好的展示一些屬性,現在將xml換成這樣:

         代碼如下:

        

        

        

        張三

        12000

        42

        

        代碼如下:

         代碼如下:

        static void Main(string[] args)

        {

        XmlDocument doc = new XmlDocument();

        doc.Load(@"C:\Users\Administrator\Desktop\ConsoleApplication1\ConsoleApplication1\Test.xml");

        XmlNamespaceManager xnm = new XmlNamespaceManager(doc.NameTable);

        xnm.AddNamespace("h", "http://www.xxx.com/");

        XmlNode Article = doc.SelectSingleNode("h:Article", xnm);

        string namespace1 = Article.InnerText;

        Console.WriteLine(namespace1); //輸出 張三 12000 30

        Console.WriteLine(Article.Prefix); //輸出 h 獲取當前節點的前綴

        Console.WriteLine(Article.NamespaceURI); //輸出 http://www.xxx.com/123 獲取當前節點所在的命名空間

        Console.WriteLine(Article.FirstChild.Name + "---" + Article.FirstChild.Value + "---" + Article.FirstChild.LocalName);

        //以上一行代碼輸出 h:author------author

        //SchemaInfo 返回節點的后架構驗證信息集 (PSVI)。//Value 獲取或設置節點的值。 (繼承自 XmlNode。)

        //XmlResolver 設置 XmlResolver 以用于解析外部資源。

        Console.ReadKey();

        }

        再來一個展示一下Schemas這個常用的屬性

         代碼如下:

        static void Main(string[] args)

        {

        XmlDocument doc = new XmlDocument(); //創建文檔

        doc.Schemas.Add(null, @"C:\Users\Administrator\Desktop\ConsoleApplication1\ConsoleApplication1\person.xsd"); //添加一個架構對象到本XmlDocument

        doc.Load(@"C:\Users\Administrator\Desktop\ConsoleApplication1\ConsoleApplication1\person.xml"); //加載xml文件

        Console.WriteLine(doc.Schemas.Count); //輸出1 就是第二行添加的那個

        Console.WriteLine(doc.SchemaInfo.MemberType);

        //XmlResolver 設置 XmlResolver 以用于解析外部資源。

        Console.ReadKey();

        }

        下面來試下XmlDocument的方法

        Test.xml的代碼如下:

         代碼如下:

        

        

        

        1

        

        羅貫中

        2005

      38.5

        

        

        2

        

        吳承恩

        2004

      37.5

        

        

        主程序代碼如下:

        代碼如下:

        static void Main(string[] args)

        {

        XmlDocument doc = new XmlDocument(); //創建文檔

        doc.Load(@"C:\Users\Administrator\Desktop\ConsoleApplication1\ConsoleApplication1\Test.xml"); //加載xml文件

        XmlNode node1 = doc.CreateNode(XmlNodeType.Element, "pagecount", null);

        node1.InnerText = "222";

        doc.SelectSingleNode("/bookstore").AppendChild(node1); //執行之后 222 元素被添加到前面

        doc.Save(@"D:\123.xml");

        XmlNode node2 = doc.SelectSingleNode("/bookstore/book[1]/title[1]").Clone(); //克隆一個節點出來

        Console.WriteLine(node2.InnerText); //輸出三國演義

        XmlNode node3 = doc.SelectSingleNode("/bookstore/book[1]/title[1]").CloneNode(true); //參數決定是否克隆子節點數(如果false,文本節點也不克隆)

        Console.WriteLine(node3.InnerText); //輸出三國演義

        XmlAttribute attr = doc.CreateAttribute("age"); //創建一個age屬性

        attr.Value = "23";

        doc.SelectSingleNode("/bookstore/book[1]/author[1]").Attributes.Append(attr); //執行之后第一個作者變為 羅貫中

        doc.Save(@"D:\123.xml");

        XmlCDataSection cdata = doc.CreateCDataSection("我&你");

        doc.SelectSingleNode("/bookstore/book[1]/author[1]").AppendChild(cdata); //執行之后author變為羅貫中

        doc.Save(@"D:\123.xml");

        XmlComment com = doc.CreateComment("2013-2-27 22:37:25");

        doc.SelectSingleNode("/bookstore/book[1]/title[1]").AppendChild(com); //執行之后title變為

        doc.Save(@"D:\123.xml");

        XmlDocument doc1 = new XmlDocument();

        XmlDocumentFragment xdf = doc1.CreateDocumentFragment(); //一個xml片段,這個類敢情好用

        xdf.InnerXml = "widget";

        doc1.AppendChild(xdf);

        Console.WriteLine(doc1.OuterXml); //輸出widget

        //CreateDefaultAttribute        創建具有指定前綴、本地名稱和命名空間 URI 的默認屬性。

        //CreateDocumentType        返回新的 XmlDocumentType 對象。

        XmlDocument doc2 = new XmlDocument();

        XmlElement element = doc2.CreateElement("title"); //創建一個title 如果現在保存是輸出&h;

        XPathNavigator nav = doc2.CreateNavigator(); //一個通過光標的導航模型遍歷XML文檔的數據

        XmlText text = doc2.CreateTextNode("你好啊"); //創建一個文本節點

        doc2.SelectSingleNode("/title").AppendChild(text);

        Console.WriteLine(doc2.OuterXml); //輸出&h;你好啊

        XmlWhitespace xws = doc2.CreateWhitespace(" "); //創建一個空白節點

        doc2.SelectSingleNode("/title").AppendChild(xws);

        Console.WriteLine(doc2.OuterXml); //輸出&h;你好啊

        XmlDeclaration xd = doc2.CreateXmlDeclaration("1.0", "utf-8", "yes"); //xml頭 XML聲明部分

        XmlNode root = doc2.SelectSingleNode("/title");

        doc2.InsertBefore(xd, root);

        Console.WriteLine(doc2.OuterXml); //執行之后 在頭部加入了

        XmlSignificantWhitespace xsw = doc2.CreateSignificantWhitespace(" ");

        XmlElement ele = doc2.CreateElement("white");

        ele.InnerText = "空白啊空白";

        ele.AppendChild(xsw);

        doc2.SelectSingleNode("/title").AppendChild(ele);

        Console.WriteLine(doc2.OuterXml); //還是添加一大堆空白,不知道與CreateWhitespace有什么區別

        XmlDocument doc3 = new XmlDocument();

        String PItext = "type='text/xsl' href='book.xsl'";

        XmlProcessingInstruction newPI = doc3.CreateProcessingInstruction("xml-stylesheet", PItext);

        doc3.AppendChild(newPI);

        Console.WriteLine(doc3.OuterXml); //輸出

        //GetElementById           獲取具有指定 ID 的 XmlElement。

        //GetElementsByTagName       已重載。 返回一個 XmlNodeList,它包含與指定名稱匹配的所有子代元素的列表。

        //GetEnumerator            提供對 XmlNode 中節點上“for each”樣式迭代的支持。 (繼承自 XmlNode。)

        //GetNamespaceOfPrefix        查找當前節點范圍內離給定的前綴最近的 xmlns 聲明,并返回聲明中的命名空間 URI。 (繼承自 XmlNode。)

        //GetPrefixOfNamespace        查找當前節點范圍內離給定的命名空間 URI 最近的 xmlns 聲明,并返回聲明中定義的前綴。 (繼承自 XmlNode。)

        //ImportNode             將節點從另一個文檔導入到當前文檔。

        //InsertAfter              將指定的節點緊接著插入指定的引用節點之后。 (繼承自 XmlNode。)

        //InsertBefore             將指定的節點緊接著插入指定的引用節點之前。 (繼承自 XmlNode。)

        //LoadXml               從指定的字符串加載 XML 文檔。

      分享:asp.net水晶報表參數字段在代碼中賦值的方法
      本文實例講述了asp.net水晶報表參數字段在代碼中賦值的方法。分享給大家供大家參考。具體實現方法如下: ? 下面是我自己的應用: ? 第一段代碼有兩個參數字段,第二個代碼有一個參數字段。 希望本文所述對大家的asp.net程序設計有所幫助。

      來源:模板無憂//所屬分類:.Net教程/更新時間:2015-05-22
      相關.Net教程