• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 224  文章 - 41  trackbacks - 0
            <2008年11月>
            2627282930311
            2345678
            9101112131415
            16171819202122
            23242526272829
            30123456

            享受編程

            常用鏈接

            留言簿(11)

            隨筆分類(159)

            隨筆檔案(224)

            文章分類(2)

            文章檔案(4)

            經典c++博客

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            XML介紹

            表面上, XML看起來像HTML. 兩者都從標準通用標記語言(SGML)起源。產生HTML的工具能常常被再用來產生XML。XML在兩個重要區域中是和HTML不同: 句法和語義.

            • XML句法

            HTML和XML使用 <, >, 和 & 創造要素和屬性結構. 在HTML瀏覽器接受或者忽視混合標記語言時,XML語法分析器建立在這些分析器上的應用程序比較嚴格。在XML句法中的錯誤停止文件處理, 用戶或者應用得到錯誤啟示, 而不是對文檔結構進行猜測。

            XML文件必須遵守標記文件部分和創造嵌入要素結構的規定. 在XML文件中要素不能重疊. 如果要素的起始標簽是在另一要素以內,它必須去同一包含要素中中止。例如, 下列的HTML代碼表示了黑體和斜體字的混合結構。

            <b>This is bold text. <i>This is bold italic text.</b> This is italic text.</i>

            在一些HTML瀏覽器中它會正常顯示。在一位XML從語法上分析上,就行不通了。為了取得在XML中同樣的格式, 可以使用下列的句法.

            <b>This is bold text.</b> <i><b>This is bold italic text.</b> This is italic text.</i>

            這為XML文件創建者的額外工作提高了互操作性。XML同樣對句法的其它方面要求嚴格.所有的屬性值一定是加以引用的,你不能在你文件的文本內使用<,>或者&,而要用&lt;, &gt;或&amp;代替。

            • XML語義

            雖然XML關于句法是嚴格的, 它為開始者在XML文件中明確定義提供更多選項.<b>總是對HTML處理器有同樣的意義.用XML, 你能建立你的自己標記詞匯或者在各種各樣的適合于你的工業或者項目類型提價標記詞中挑選一個.圖表和文件類型定義(DTDs)讓你描繪這些詞匯, 但是你能也建立文件沒有正式規定使用的詞匯. 使用Namespaces幫助你分辨認出使用的詞匯。

            這個方法要求適應各種不同瀏覽器要求的結構。開發者不能指望XML應用懂得他們的標記意味著什么,并理解這些標記。 瀏覽器能使目前XML表示出來, 但是要求style sheet以CSS或XSLXSL Transformations(XSLT)來規范用戶的說明。一些瀏覽器,包含IE5.0+, 包含默認的style sheet,但它主要用于診斷而不是用于最終用戶設計。

            XML應用也能使他們的自己邏輯進入XML詞匯,而不單純依賴style sheets。這邏輯可以采取簡單腳本的形式或綁定到特殊的表示模型,或者它可以涉及編寫整個應用程序。這些應用利用內建的包含在XML文件的標簽結構來處理在那些文件中信息, 傳遞給用戶, 把他們與其它數據來源連接起來,或者重定向它們到其它適合用戶。

            • XML格式的優勢

            在某一方面,XML是僅僅另一數據格式,在其它方面,XML比其它格式有幾個重要優勢,它可以更有效地存儲信息。

            XML允許開發者建立他們的屬于自己的保存信息的標記結構.

            XML解析語法是非常明確,而且是一種廣泛應用的工具, 它能從在各種各樣的環境中XML文件使獲得知識.在Unicode基礎的基礎上建立XML使它更容易建立使國際化文件.

            應用能依賴XML分析器確定結構的可靠性,以及進行數據類型檢查

            XML格式置于文本使他們變得更有閱讀,更容易用文件保證其有效性,更容易糾正錯誤。

            XML文件能夠利用大部建立在瀏覽器中的資源。

            XML是并非適合于每一個環境,XML文件比他們取代的二進制格式的更哆嗦.他們需要更多網絡帶寬和存儲空間,需要更多的處理器時間,但是, 優秀應用程序設計能避免某些問題.

            建立一簡單XML文件

            為了證明怎樣XML結構能被使用來描述信息, 我們將建立一非常基本XML文件,它含有一包含下列域的雇員創記錄

            .

            Name

            Home Address

            Job Title

            Salary

            這個是雇員記錄.

            Shane S. Kim

            1234 South Street

            Anywhere, NY 10001

            USA

            Vice President of Finance

            $175,000

            定義基本元素

            為了開始我們的XML,我們需要一文件或者根元素, 在這個情況下, <employeeRecord>, 保有全部我們文件的內容.下面,我們將用一<name>要素表達雇員名字; <homeAddress>表示地址;<jobTitle element>表示職稱;工資則用<salary>。

            <employeeRecord>

            <name>Shane S. Kim</name>

            <homeAddress>1234 South Street

            Anywhere, NY 10001

            USA</homeAddress>

            <jobTitle>Vice President of Finance</jobTitle>

            <salary>$175,000</salary>

            </employeeRecord>

            指出元素的開始用開始標志, 象<employeeRecord>,在元素的結束是用結束標志,象</employeeRecord>。所有的元素正確嵌入。符合我們上面所說的標準。

            重新定義要素

            <name>和<homeAddress>要素包括有利于利用的信息,例如,可以對雇員的名字進行排序。我們將添加一些孩子元素<givenName>,<middleName>和<familyName>到名字要素.

            <name><givenName>Shane</givenName> <middleName>S.</middleName> <lastName>Kim</lastName></name>

            我們將也給我們家庭地址要素添加更多細節.

            <homeAddress><street>1234 South Street</street>

            <city>Anywhere</city>, <stateProvince>NY</stateProvince> <postalCode>10001</postalCode>

            <country>USA</country></homeAddress>

            現在文件如下:

            <employeeRecord>

            <name><givenName>Shane</givenName> <middleName>S.</middleName> <lastName>Kim</lastName></name>

            <homeAddress><street>1234 South Street</street>

            <city>Anywhere</city>, <stateProvince>NY</stateProvince> <postalCode>10001</postalCode>

            <country>USA</country></homeAddress>

            <jobTitle>Vice President of Finance</jobTitle>

            <salary>$175,000</salary>

            </employeeRecord>

            在這版本中,要素結構辨認出全部的文件內容. 如果我們認為不應該包括某內容或結構,我們可以使用一個屬性。例如如果這個公司以超過一各的貨幣支付薪水,那就必須指定貨幣的種類。文檔將變成下面的樣子:

            <salary currency="USD">$175,000</salary>

            以相似方式一個有關<employeeRecord>要素的employeeID屬性可以使程序變得更容易操縱雇員記錄, 特別當我們必須聯合多個XML文件時.

            <employeeRecord employeeID="2344-12Z">

            現在完整文件如下:

            <employeeRecord employeeID="2344-12Z">

            <name><givenName>Shane</givenName> <middleName>S.</middleName> <lastName>Kim</lastName></name>

            <homeAddress><street>1234 South Street</street>

            <city>Anywhere</city>, <stateProvince>NY</stateProvince> <postalCode>10001</postalCode>

            <country>USA</country></homeAddress>

            <jobTitle>Vice President of Finance</jobTitle>

            <salary currency="USD">$175,000</salary>

            </employeeRecord>

            • 在IE上展示文件

            Microsoft Internet Explorer提供一缺省的對XML文件的瀏覽器,可以展示他們的結構, 以及支持使用CSS或ESL表示的XML格式文本。如果一XML文件包含一xml stylesheet處理指令, Internet Explorer使用指定相應的形式顯示信息.如果沒有xml stylesheet處理指令,Internet Explorer應用它的缺省的style sheet.

            默認的style sheet是對于許多通用程序很有用.裝載一文件到Internet Explorer 使微軟XML Parser(MSXML)解析文件的語法和檢查它的結構是否合法。如果解析語法失敗, Internet Explorer報告錯誤信息. 如果解析語法取得成功, Internet Explorer給出是一輪廓文件結構, 以小的+和-圖標來顯示其中的內容。如果文檔某一部分長度比較長,這種顯示能幫助你迅速瀏覽信息.

            • XML文件的各個部分

             

            • 元素

            元素是組成XML的最基本的單位,它由開始標記,屬性和結束標記組成。下面就是一個屬性的開始標記:

            <elementName att1Name="att1Value" att2Name="att2Value"...>

            就是一個元素的例子,每個元素必須有一個元素名,元素可以若干個屬性以及屬性值。如果元素沒有屬性,則開始標記為<elementName>。而結束標記為</elementName>。下面就是一個人的元素,其中包括了此人的姓名:

            givenName>Peter</givenName> <familyName>Kress</familyName></person>

            using System;
            using System.Collections.Generic;
            using System.ComponentModel;
            using System.Data;
            using System.Drawing;
            using System.Text;
            using System.Windows.Forms;
            using System.Xml;

            namespace XMLTest
            {
                
            public partial class XMLTest : Form
                
            {
                    
            private XmlDocument xmlDoc = null ;
                    
            private string strXMLPath = "Books.xml";

                    
            public XMLTest()
                    
            {
                        InitializeComponent();
                        InitXML();
                    }


                    
            private void InitXML()
                    
            {
                        
            if(xmlDoc == null)
                            xmlDoc 
            = new XmlDocument();

                        
            if (!System.IO.File.Exists(strXMLPath))
                        
            {
                            XmlDeclaration dec 
            = xmlDoc.CreateXmlDeclaration("1.0""GB2312"null);
                            xmlDoc.AppendChild(dec);

                            XmlElement root 
            = xmlDoc.CreateElement("Books");
                            xmlDoc.AppendChild(root);

                            xmlDoc.Save(strXMLPath);
                        }

                    }

                    
            private void btnCreate_Click(object sender, EventArgs e)
                    
            {
                        xmlDoc.Load(strXMLPath);

                        XmlNode root 
            = xmlDoc.SelectSingleNode("Books");

                        XmlElement book 
            = xmlDoc.CreateElement("Book");

                        XmlElement title 
            = xmlDoc.CreateElement("Title");
                        title.InnerText 
            = "XML";
                        book.AppendChild(title);

                        XmlElement isbn 
            = xmlDoc.CreateElement("ISBN");
                        isbn.InnerText 
            = "3333333";
                        book.AppendChild(isbn);

                        XmlElement author 
            = xmlDoc.CreateElement("Author");
                        author.InnerText 
            = "snow";
                        book.AppendChild(author);

                        XmlElement price 
            = xmlDoc.CreateElement("Price");
                        price.InnerText 
            = "120";
                        price.SetAttribute(
            "Unite""Fckpd");
                        price.SetAttribute(
            "name""sf");

                        book.AppendChild(price);

                        root.AppendChild(book);
                        xmlDoc.Save(strXMLPath);
                    }


                    
            private void btnUpdate_Click(object sender, EventArgs e)
                    
            {
                        xmlDoc.Load(strXMLPath);

                        XmlNodeList nodeList 
            = xmlDoc.SelectSingleNode("Books//Book").ChildNodes;

                        
            foreach (XmlNode xn in nodeList)
                        
            {
                            XmlElement xe 
            = (XmlElement)xn;
                            
            if (xe.Name == "Author")
                            
            {
                                xe.InnerText 
            = "amandag";
                            }


                            
            if (xe.GetAttribute("Unit"== "Fckpd")
                            
            {
                                xe.SetAttribute(
            "Unit""!");
                            }

                        }


                        xmlDoc.Save(strXMLPath);
                    }


                    
            private void btnDelete_Click(object sender, EventArgs e)
                    
            {
                        xmlDoc.Load(strXMLPath);

                        XmlNodeList nodeList 
            = xmlDoc.SelectSingleNode("Books//Book").ChildNodes;

                        
            foreach(XmlNode xn in nodeList)
                        
            {
                            XmlElement xe 
            = (XmlElement)xn;
                            
            if(xe.Name == "Author")
                            
            {
                                xe.RemoveAll();
                            }

                            
            if (xe.GetAttribute("Unit"== "!")
                            
            {
                                xe.RemoveAttribute(
            "Unit");
                            }

                        }


                        xmlDoc.Save(strXMLPath);
                    }


                    
            private void btnReader_Click(object sender, EventArgs e)
                    
            {
                        xmlDoc.Load(strXMLPath);

                        XmlNodeReader reader 
            = new XmlNodeReader(xmlDoc);
                        
            while (reader.Read())
                        
            {
                            
            if (reader.NodeType == XmlNodeType.Element)
                            
            {
                                
            if (reader.Name.Equals("Price"))
                                
            {
                                    
            if(reader.HasAttributes)
                                    
            {
                                        
            string unit = reader.GetAttribute("Unit");
                                    }

                                }

                                
            if (reader.Name.Equals("Author"))
                                
            {
                                    
            string author = reader.ReadString();
                                }

                            }

                        }

                    }



                }

            }

            代碼中的xml
            <?xml version="1.0" encoding="GB2312"?>
            <Books>
              
            <Book>
                
            <Title>XML</Title>
                
            <ISBN>3333333</ISBN>
                
            <Author>snow</Author>
                
            <Price Unite="Fckpd" name="sf">120</Price>
              
            </Book>
            </Books>
            posted on 2010-08-26 11:32 漂漂 閱讀(2098) 評論(0)  編輯 收藏 引用 所屬分類: c#開發
            久久精品国产精品亚洲毛片| 国产精品一区二区久久精品涩爱 | 久久精品国产福利国产秒| 国产精品美女久久久久网| 99久久国产亚洲高清观看2024| 久久精品国产亚洲精品| 色偷偷偷久久伊人大杳蕉| 久久99精品国产麻豆蜜芽| 无码伊人66久久大杳蕉网站谷歌| www.久久热| 亚洲综合伊人久久综合| 久久最近最新中文字幕大全 | 久久精品www| 国产A三级久久精品| 久久精品国产91久久麻豆自制| 伊人情人综合成人久久网小说| 国产成年无码久久久久毛片| 99精品国产免费久久久久久下载 | 精品久久久久久无码中文野结衣 | 久久99精品综合国产首页| 免费无码国产欧美久久18| 久久久久久久久久久免费精品| 久久精品国产亚洲AV大全| 色妞色综合久久夜夜| 久久亚洲天堂| 精品水蜜桃久久久久久久| 国产精品天天影视久久综合网| 亚洲AV无一区二区三区久久| 99久久免费国产精品特黄| 亚洲性久久久影院| 人妻系列无码专区久久五月天| 51久久夜色精品国产| 国内精品久久久久| 国产精品福利一区二区久久| 久久久精品人妻一区二区三区蜜桃| 一级女性全黄久久生活片免费 | 久久99精品久久久久久9蜜桃| 免费观看成人久久网免费观看| 国产精品久久久久久搜索| 国产精品视频久久| 91精品久久久久久无码|