ASP.NET XmlDocument類詳解(2)_.Net教程
推薦: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文檔:
代碼如下:
代碼:
代碼如下:
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換成這樣:
代碼如下:
代碼如下:
代碼如下:
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的代碼如下:
代碼如下:
主程序代碼如下:
代碼如下:
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); //執行之后
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 = "
doc1.AppendChild(xdf);
Console.WriteLine(doc1.OuterXml); //輸出
//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教程-ASP.NET XmlDocument類詳解(2)
。