C#中使用DOM解析XML文档的方法

 

 

用DOM来处理XML是有点强大,不过,在以下三种情况中不适合用DOM.
一:读取XML时,应用XmlTextReader或XmlValidatingReader;
二:查询XML,应用XPathDocument;
三:XML转换,应用XslTransform.

用C#来处理DOM主要的几个步骤如下:
一、先声明一XmlDocument对象并装载XML文件或片段;
      XmlDocument doc=new XmlDocument(); --不要忘记了导入System.Xml哦
      doc.load("test.xml");
      --doc.loadXml("abc");

二、再声明一XmlElement变量对象并用doc.DocumentElement来赋值(得到XML文件的根元素不是根节点)
      XmlElement root=doc.DocumentElement();

三、这样我们就可以进行查找节点再进行相应的操作了:

      1)、查找单个节点可有两种方法,一种是:用Get系列方法,如GetFirstChild(),另一种方法是SelectSingleNode("相应的XPath字符串");

       2)、也可查找节点集有两个对象XmlNodeList与XmlNamedNodeMap,共五种方法:
             前者用得比较多,而后者是处理无序节点集多处理Xml片段
           //方法一
           //XmlNodeList el=n.ChildNodes;    得到n的所有子节点集

          //方法二
          //XmlNodeList el=n.SelectNodes("book");

         //方法三
          //    XmlElement rootEle=doc.DocumentElement;
         //    XmlNodeList el=rootEle.GetElementsByTagName("book");

         //方法四
         //XmlNodeList el=doc.GetElementsByTagName("book");
        
          //方法五
         //略
  
         3)、可用以下三种方法来循环处理节点集
          方法一:
            foreach(XmlElement ele in el)
           {
             MessageBox.Show(ele.OuterXml); 
          }

           方法二:
         for(int i=0;i          {
               MessageBox.Show(el[i].OuterXml);
         }

         方法三:
         System.Collections.IEnumerator IE=doc.GetElementsByTagName("book").GetEnumerator();
                                           --由上面的GetEnumerator(); 返回 Collections.IEnumerator 对象      
        XmlElement CurrentElement;
        while(IE.MoveNext())
        {
               CurrentElement=(XmlElement)IE.Current;--此处要把类型为object的Current转为Xmlelement
               MessageBox.Show(CurrentElement.OuterXml);
        }

四、创建新节点
         主要的步骤如下:
               1)、用XmlDocument对象并用XML填充其
               2)、确定要插入的位置并定位到此位置
                3)、创建节点(其实也可为:Element、Attribute、Text、Comment、CDATA或Processing &Instruction)
               4)、再在XmlDocment对象中添加节点
                      (注意:添加节点只有三种方法而已。AppendChild()、InsertBefore()还有InsertAfter();)
        一:创建元素节点
              XmlElement elem=doc.CreateElement("price");
               XmlElement(对象)。InnerText();
              XmlNode(对象)。CreateTextNode();

         二:为元素节点设置属性
              SetAttribute()此方法是有则改,无则创.
  
         三:创建其他类型的节点
              XmlDocument.CreateComment()方法进行注释节点
              XmlDocument.CreateCDataSection()
              XmlDocument.CreateProcessingInstruction()

五、修改和删除节点
               ReplaceChild();
              SetAttribute();

              RemoveChild();
               RemoveAttribute();
               RemoveAll();

你可能感兴趣的:(C#)