熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

在C#.net中操作XML實例

2013-11-13 10:19:46  來源: .NET編程 

  在中如何操作XML
    需要添加的命名空間
    using SystemXml;

  定義幾個公共對象
    XmlDocument xmldoc ;
    XmlNode xmlnode ;
    XmlElement xmlelem ;

  創建到服務器同名目錄下的xml文件

  方法一
    xmldoc = new XmlDocument ( ) ;
    //加入XML的聲明段落
    xmlnode = xmldocCreateNode ( XmlNodeTypeXmlDeclaration ) ;
    xmldocAppendChild ( xmlnode ) ;
    //加入一個根元素
    xmlelem = xmldocCreateElement ( Employees ) ;
    xmldocAppendChild ( xmlelem ) ;
    //加入另外一個元素
    for(int i=;i<;i )
    {

  XmlNode root=xmldocSelectSingleNode(Employees);//查找<Employees>
    XmlElement xe=xmldocCreateElement(Node);//創建一個<Node>節點
    xeSetAttribute(genre李贊紅);//設置該節點genre屬性
    xeSetAttribute(ISBN);//設置該節點ISBN屬性

  XmlElement xesub=xmldocCreateElement(title);
    xesubInnerText=CS從入門到精通;//設置文本節點
    xeAppendChild(xesub);//添加到<Node>節點中
    XmlElement xesub=xmldocCreateElement(author);
    xesubInnerText=候捷;
    xeAppendChild(xesub);
    XmlElement xesub=xmldocCreateElement(price);
    xesubInnerText=;
    xeAppendChild(xesub);

  rootAppendChild(xe);//添加到<Employees>節點中
    }
    //保存創建好的XML文檔
    xmldocSave ( ServerMapPath(dataxml) ) ;

  //////////////////////////////////////////////////////////////////////////////////////
    結果在同名目錄下生成了名為dataxml的文件內容如下
    <?xml version=?>
    <Employees>
    <Node genre=李贊紅 ISBN=>
    <title>CS從入門到精通</title>
    <author>候捷</author>
    <price></price>
    </Node>
    <Node genre=李贊紅 ISBN=>
    <title>CS從入門到精通</title>
    <author>候捷</author>
    <price></price>
    </Node>
    </Employees>

  方法二
    XmlTextWriter xmlWriter;
    string strFilename = ServerMapPath(dataxml) ;

  xmlWriter = new XmlTextWriter(strFilenameEncodingDefault);//創建一個xml文檔
    xmlWriterFormatting = FormattingIndented;
    xmlWriterWriteStartDocument();
    xmlWriterWriteStartElement(Employees);

  xmlWriterWriteStartElement(Node);
    xmlWriterWriteAttributeString(genre李贊紅);
    xmlWriterWriteAttributeString(ISBN);

  xmlWriterWriteStartElement(title);
    xmlWriterWriteString(CS從入門到精通);
    xmlWriterWriteEndElement();

  xmlWriterWriteStartElement(author);
    xmlWriterWriteString(候捷);

  xmlWriterWriteEndElement();

  xmlWriterWriteStartElement(price);
    xmlWriterWriteString();
    xmlWriterWriteEndElement();

  xmlWriterWriteEndElement();

  xmlWriterClose();
    //////////////////////////////////////////////////////////////////////////////////////
    結果
    <?xml version= encoding=gb?>
    <Employees>
    <Node genre=李贊紅 ISBN=>
    <title>CS從入門到精通</title>
    <author>候捷</author>
    <price></price>
    </Node>
    </Employees>

 

  添加一個結點

  XmlDocument xmlDoc=new XmlDocument();
    xmlDocLoad(ServerMapPath(dataxml));
    XmlNode root=xmlDocSelectSingleNode(Employees);//查找<Employees>
    XmlElement xe=xmlDocCreateElement(Node);//創建一個<Node>節點
    xeSetAttribute(genre張三);//設置該節點genre屬性
    xeSetAttribute(ISBN);//設置該節點ISBN屬性

  XmlElement xesub=xmlDocCreateElement(title);
    xesubInnerText=C#入門幫助;//設置文本節點
    xeAppendChild(xesub);//添加到<Node>節點中
    XmlElement xesub=xmlDocCreateElement(author);
    xesubInnerText=高手;
    xeAppendChild(xesub);
    XmlElement xesub=xmlDocCreateElement(price);
    xesubInnerText=;
    xeAppendChild(xesub);

  rootAppendChild(xe);//添加到<Employees>節點中
    xmlDocSave ( ServerMapPath(dataxml) );

  //////////////////////////////////////////////////////////////////////////////////////
    結果在xml原有的內容裡添加了一個結點內容如下
    <?xml version=?>
    <Employees>
    <Node genre=李贊紅 ISBN=>
    <title>CS從入門到精通</title>
    <author>候捷</author>
    <price></price>
    </Node>
    <Node genre=李贊紅 ISBN=>
    <title>CS從入門到精通</title>
    <author>候捷</author>
    <price></price>
    </Node>
    <Node genre=張三 ISBN=>
    <title>C#入門幫助</title>
    <author>高手</author>
    <price></price>
    </Node>
    </Employees>

  修改結點的值(屬性和子結點)

  XmlDocument xmlDoc=new XmlDocument();
    xmlDocLoad( ServerMapPath(dataxml) );

  XmlNodeList nodeList=xmlDocSelectSingleNode(Employees)ChildNodes;//獲取Employees節點的所有子節點

  foreach(XmlNode xn in nodeList)//遍歷所有子節點
    {
    XmlElement xe=(XmlElement)xn;//將子節點類型轉換為XmlElement類型
    if(xeGetAttribute(genre)==張三)//如果genre屬性值為張三

  {
    xeSetAttribute(genreupdate張三);//則修改該屬性為update張三

  XmlNodeList nls=xeChildNodes;//繼續獲取xe子節點的所有子節點
    foreach(XmlNode xn in nls)//遍歷
    {
    XmlElement xe=(XmlElement)xn;//轉換類型
    if(xeName==author)//如果找到
    {
    xeInnerText=亞勝;//則修改
    }
    }
    }
    }
    xmlDocSave( ServerMapPath(dataxml) );//保存

  //////////////////////////////////////////////////////////////////////////////////////
    結果將原來的所有結點的信息都修改了xml的內容如下
    <?xml version=?>
    <Employees>
    <Node genre=李贊紅 ISBN=>
    <title>CS從入門到精通</title>
    <author>候捷</author>
    <price></price>
    </Node>
    <Node genre=李贊紅 ISBN=>
    <title>CS從入門到精通</title>
    <author>候捷</author>
    <price></price>
    </Node>
    <Node genre=update張三 ISBN=>
    <title>C#入門幫助</title>
    <author>亞勝</author>
    <price></price>
    </Node>
    </Employees>

 

  修改結點(添加結點的屬性和添加結點的自結點)
    XmlDocument xmlDoc=new XmlDocument();
    xmlDocLoad( ServerMapPath(dataxml) );

  XmlNodeList nodeList=xmlDocSelectSingleNode(Employees)ChildNodes;//獲取Employees節點的所有子節點

  foreach(XmlNode xn in nodeList)
    {
    XmlElement xe=(XmlElement)xn;
    xeSetAttribute(test);

  XmlElement xesub=xmlDocCreateElement(flag);
    xesubInnerText=;
    xeAppendChild(xesub);
    }
    xmlDocSave( ServerMapPath(dataxml) );

  //////////////////////////////////////////////////////////////////////////////////////
    結果每個結點的屬性都添加了一個子結點也添加了一個內容如下
    <?xml version=?>
    <Employees>
    <Node genre=李贊紅 ISBN= test=>
    <title>CS從入門到精通</title>
    <author>候捷</author>
    <price></price>
    <flag></flag>
    </Node>
    <Node genre=李贊紅 ISBN= test=>
    <title>CS從入門到精通</title>
    <author>候捷</author>
    <price></price>
    <flag></flag>
    </Node>
    <Node genre=update張三 ISBN= test=>
    <title>C#入門幫助</title>
    <author>亞勝</author>
    <price></price>
    <flag></flag>
    </Node>
    </Employees>

  刪除結點中的某一個屬性

  XmlDocument xmlDoc=new XmlDocument();
    xmlDocLoad( ServerMapPath(dataxml) );
    XmlNodeList xnl=xmlDocSelectSingleNode(Employees)ChildNodes;
    foreach(XmlNode xn in xnl)
    {
    XmlElement xe=(XmlElement)xn;
    xeRemoveAttribute(genre);//刪除genre屬性

  XmlNodeList nls=xeChildNodes;//繼續獲取xe子節點的所有子節點
    foreach(XmlNode xn in nls)//遍歷
    {
    XmlElement xe=(XmlElement)xn;//轉換類型
    if(xeName==flag)//如果找到
    {
    xeRemoveChild(xe);//則刪除
    }
    }
    }
    xmlDocSave( ServerMapPath(dataxml) );

  //////////////////////////////////////////////////////////////////////////////////////]
    結果刪除了結點的一個屬性和結點的一個子結點內容如下
    <?xml version=?>
    <Employees>
    <Node ISBN= test=>
    <title>CS從入門到精通</title>
    <author>候捷</author>
    <price></price>
    </Node>
    <Node ISBN= test=>
    <title>CS從入門到精通</title>
    <author>候捷</author>
    <price></price>
    </Node>
    <Node ISBN= test=>
    <title>C#入門幫助</title>
    <author>亞勝</author>
    <price></price>
    </Node>
    </Employees>

 

  刪除結點
    XmlDocument xmlDoc=new XmlDocument();
    xmlDocLoad( ServerMapPath(dataxml) );
    XmlNode root=xmlDocSelectSingleNode(Employees);
    XmlNodeList xnl=xmlDocSelectSingleNode(Employees)ChildNodes;
    for(int i=;i<xnlCount;i )
    {
    XmlElement xe=(XmlElement)xnlItem(i);
    if(xeGetAttribute(genre)==張三)
    {
    rootRemoveChild(xe);
    if(i<xnlCount)i=i;
    }
    }
    xmlDocSave( ServerMapPath(dataxml) );

  結果刪除了符合條件的所有結點原來的內容

  <?xml version=?>
    <Employees>
    <Node genre=李贊紅 ISBN=>
    <title>CS從入門到精通</title>
    <author>候捷</author>
    <price></price>
    </Node>
    <Node genre=李贊紅 ISBN=>
    <title>CS從入門到精通</title>
    <author>候捷</author>
    <price></price>
    </Node>
    <Node genre=張三 ISBN=>
    <title>C#入門幫助</title>
    <author>高手</author>
    <price></price>
    </Node>

  <Node genre=張三 ISBN=>
    <title>C#入門幫助</title>
    <author>高手</author>
    <price></price>
    </Node>
    </Employees>

  刪除後的內容
    <?xml version=?>
    <Employees>
    <Node genre=李贊紅 ISBN=>
    <title>CS從入門到精通</title>
    <author>候捷</author>
    <price></price>
    </Node>
    <Node genre=李贊紅 ISBN=>
    <title>CS從入門到精通</title>
    <author>候捷</author>
    <price></price>
    </Node>
    </Employees>


From:http://tw.wingwit.com/Article/program/net/201311/13258.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.