asp.net 操作xml(添加删除修改查询)

 
  1. </pre><pre class="csharp" name="code">asp.net创建xml就是通过创建DataTable来创建xml中的树  
  2.   
  3. 型等  
  4.  DataSet objset=new DataSet();  
  5.           DataTable istable=new DataTable("test");  
  6.          istable.Columns.Add("rate1",typeof(int));  
  7.                  istable.Columns.Add  
  8.   
  9. ("rate2",typeof(int));  
  10.                  istable.Columns.Add  
  11.   
  12. ("rate3",typeof(int));  
  13.                  istable.Columns.Add  
  14.   
  15. ("rate4",typeof(int));  
  16.          objset.Tables.Add(istable);  
  17.            
  18.          DataRow dr=objset.Tables["test"].NewRow  
  19.   
  20. ();  
  21.         dr[0]=赋值;  
  22.         dr[1]=赋值;  
  23.         dr[3]=赋值;  
  24.        objset.Tables["money"].Rows.Add(dr);          
  25.   
  26.    
  27.         objset.WriteXml(Server.MapPath  
  28.   
  29. ("test.xml"),XmlWriteMode.WriteSchema);  
  30.   
  31.   
  32.         其中就是先创建DataSet和DataTable,其中建立  
  33.   
  34. 的表为test,再在表中添加子项rate1,2,3,4,再定义新  
  35.   
  36. 的行,分别添加对应的值,最后这些都已经写进DataSet  
  37.   
  38. 表中,通过DataSet把xml输入就完成了。要读就只需要把  
  39.   
  40. xml的数据读到DataSet中,再通过 DataSet中的表的项来  
  41.   
  42. 对应读出数据。  
  43.   
  44.         而C#中则使用的DOM来实现操作,比如现有一个  
  45.   
  46. bookstore.xml文件,内容如下  
  47.         <?xml version="1.0" encoding="gb2312"?>  
  48.         <bookstore>  
  49.           <book genre="fantasy" ISBN="2-3631-4">  
  50.              <title>Oberon's Legacy</title>  
  51.              <author>Corets, Eva</author>  
  52.              <price>5.95</price>  
  53.           </book>  
  54.         </bookstore>  
  55.         下面讲解4种常用的方法  
  56.   1、往<bookstore>节点中插入一个<book>节点:  
  57.   
  58.    XmlDocument xmlDoc=new XmlDocument();  
  59.    xmlDoc.Load("bookstore.xml");  
  60.    XmlNode root=xmlDoc.SelectSingleNode  
  61.   
  62. ("bookstore");//查找<bookstore>   
  63.    XmlElement xe1=xmlDoc.CreateElement("book");//   
  64.   
  65. 创建一个<book>节点  
  66.    xe1.SetAttribute("genre","李赞红");//设置该节点   
  67.   
  68. genre属性  
  69.    xe1.SetAttribute("ISBN","2-3631-4");//设置该节   
  70.   
  71. 点ISBN属性  
  72.    
  73.    XmlElement xesub1=xmlDoc.CreateElement  
  74.   
  75. ("title");  
  76.    xesub1.InnerText="CS从入门到精通";//设置文本节   
  77.   
  78. 点  
  79.    xe1.AppendChild(xesub1);//添加到<book>节点中   
  80.    XmlElement xesub2=xmlDoc.CreateElement  
  81.   
  82. ("author");  
  83.    xesub2.InnerText="候捷";  
  84.    xe1.AppendChild(xesub2);  
  85.    XmlElement xesub3=xmlDoc.CreateElement  
  86.   
  87. ("price");  
  88.    xesub3.InnerText="58.3";  
  89.    xe1.AppendChild(xesub3);  
  90.      
  91.    root.AppendChild(xe1);//添加到<bookstore>节点中   
  92.    xmlDoc.Save("bookstore.xml");  
  93.    //================   
  94.    结果为:  
  95.      
  96.    <?xml version="1.0" encoding="gb2312"?>  
  97.    <bookstore>  
  98.     <book genre="fantasy" ISBN="2-3631-4">  
  99.      <title>Oberon's Legacy</title>  
  100.      <author>Corets, Eva</author>  
  101.      <price>5.95</price>  
  102.     </book>  
  103.     <book genre="李赞红" ISBN="2-3631-4">  
  104.      <title>CS从入门到精通</title>  
  105.      <author>候捷</author>  
  106.      <price>58.3</price>  
  107.     </book>  
  108.    </bookstore>  
  109.   
  110.   
  111.   2、修改节点:将genre属性值为“李赞红“的节点的  
  112.   
  113. genre值改为“update李赞红”,将该节点的子节点  
  114.   
  115. <author>的文本修改为“亚胜”。  
  116.   
  117.    XmlNodeList nodeList=xmlDoc.SelectSingleNode  
  118.   
  119. ("bookstore").ChildNodes;//获取bookstore节点的所有   
  120.   
  121. 子节点  
  122.    foreach(XmlNode xn in nodeList)//遍历所有子节点   
  123.    {  
  124.        XmlElement xe=(XmlElement)xn;//将子节点类型   
  125.   
  126. 转换为XmlElement类型  
  127.        if(xe.GetAttribute("genre")=="李赞红")//如   
  128.   
  129. 果genre属性值为“李赞红”  
  130.        {  
  131.            xe.SetAttribute("genre","update李赞  
  132.   
  133. 红");//则修改该属性为“update李赞红”   
  134.            XmlNodeList nls=xe.ChildNodes;//继续获   
  135.   
  136. 取xe子节点的所有子节点  
  137.            foreach(XmlNode xn1 in nls)//遍历   
  138.            {  
  139.                XmlElement xe2=(XmlElement)xn1;//转   
  140.   
  141. 换类型  
  142.                if(xe2.Name=="author")//如果找到   
  143.                {  
  144.                    xe2.InnerText="亚胜";//则修改   
  145.                    break;//找到退出来就可以了   
  146.                }  
  147.            }  
  148.            break;  
  149.        }  
  150.    }  
  151.    
  152.    xmlDoc.Save("bookstore.xml");//保存。   
  153.    //=================   
  154.   
  155.    最后结果为:  
  156.   
  157.    <?xml version="1.0" encoding="gb2312"?>  
  158.    <bookstore>  
  159.     <book genre="fantasy" ISBN="2-3631-4">  
  160.      <title>Oberon's Legacy</title>  
  161.      <author>Corets, Eva</author>  
  162.      <price>5.95</price>  
  163.     </book>  
  164.     <book genre="update李赞红" ISBN="2-3631-4">  
  165.      <title>CS从入门到精通</title>  
  166.      <author>亚胜</author>  
  167.      <price>58.3</price>  
  168.     </book>  
  169.    </bookstore>  
  170.   
  171.   
  172.   3、删除 <book genre="fantasy" ISBN="2-3631-4">节  
  173.   
  174. 点的genre属性,删除 <book genre="update李赞红"   
  175.   
  176. ISBN="2-3631-4">节点。  
  177.   
  178.    XmlNodeList xnl=xmlDoc.SelectSingleNode  
  179.   
  180. ("bookstore").ChildNodes;  
  181.    
  182.    foreach(XmlNode xn in xnl)  
  183.    {  
  184.       XmlElement xe=(XmlElement)xn;  
  185.    
  186.       if(xe.GetAttribute("genre")=="fantasy")  
  187.       {  
  188.           xe.RemoveAttribute("genre");//删除genre   
  189.   
  190. 属性  
  191.       }  
  192.       else if(xe.GetAttribute("genre")=="update李  
  193.   
  194. 赞红")  
  195.       {  
  196.           xe.RemoveAll();//删除该节点的全部内容   
  197.       }  
  198.    }  
  199.    xmlDoc.Save("bookstore.xml");  
  200.    //====================   
  201.     
  202.    最后结果为:  
  203.   
  204.    <?xml version="1.0" encoding="gb2312"?>  
  205.    <bookstore>  
  206.     <book ISBN="2-3631-4">  
  207.      <title>Oberon's Legacy</title>  
  208.      <author>Corets, Eva</author>  
  209.      <price>5.95</price>  
  210.     </book>  
  211.     <book>  
  212.     </book>  
  213.    </bookstore>   
  214.   
  215.   
  216.   4、显示所有数据。  
  217.   
  218.    XmlNode xn=xmlDoc.SelectSingleNode  
  219.   
  220. ("bookstore");   
  221.    XmlNodeList xnl=xn.ChildNodes;  
  222.      
  223.    foreach(XmlNode xnf in xnl)  
  224.    {  
  225.        XmlElement xe=(XmlElement)xnf;  
  226.        Console.WriteLine(xe.GetAttribute  
  227.   
  228. ("genre"));//显示属性值   
  229.        Console.WriteLine(xe.GetAttribute("ISBN"));  
  230.    
  231.        XmlNodeList xnf1=xe.ChildNodes;  
  232.        foreach(XmlNode xn2 in xnf1)  
  233.        {  
  234.            Console.WriteLine(xn2.InnerText);//显示   
  235.   
  236. 子节点点文本  
  237.        }  
  238.    }    
  239.   
  240.         以上的就是ASP.NET和C#对xml的基本使用方法。  
  241.   
  242. 下面说一下xml和xsl,从抽象的来说,我个人觉得xml象  
  243.   
  244. 是数据库,而xsl就象是过滤的。xsl中可以加入html等语  
  245.   
  246. 法,也可以加入xml的语法等,可以列出需要的数据等。  
  247. 现有一个xml文件,内容如下  
  248. <?xml version="1.0"?>  
  249. <?xml-stylesheet type="text/xsl" href="test.xsl"?>  
  250. <NewDataSet>  
  251.  <Table id="1">  
  252.     <ProductID>1001</ProductID>  
  253.     <CategoryID>1</CategoryID>  
  254.  </Table>  
  255.  <Table id="2">  
  256.     <ProductID>1002</ProductID>  
  257.     <CategoryID>2</CategoryID>  
  258.  </Table>  
  259. </NewDataSet>  
  260.   
  261. 其中第2句是引用xsl,xsl内容如下  
  262. <?xml version="1.0"?>  
  263. <xsl:stylesheet   
  264.   
  265. xmlns:xsl="http://www.w3.org/TR/WD-xsl">  
  266. <xsl:template match="/">  
  267. <html>  
  268.      <body>  
  269.        <center>  
  270.        <h2>the notepad</h2>  
  271.        <table border="1">  
  272.            <tr>  
  273.                 <td>id</td>  
  274.                 <td>name</td>  
  275.            </tr>  
  276.       <xsl:for-each select="NewDataSet/Table">  
  277.            <tr>  
  278.                 <td><xsl:value-of   
  279.   
  280. select="ProductID"/></td>  
  281.                 <td><xsl:value-of   
  282.   
  283. select="ProductName"/></td>  
  284.             </tr>  
  285.       </xsl:for-each>  
  286.        </table>  
  287.        </center>  
  288.      </body>  
  289.     </html>  
  290.  </xsl:template>  
  291. </xsl:stylesheet>  
  292.   
  293. 中间的for-each就是循环遍历节点,获取指定的select后  
  294.   
  295. 的内容,下面的value-of就相当于sql中字段名。在使用  
  296.   
  297. xsl的时候,还可以查询某一个值,这样xsl就需要如下  
  298.   
  299. <xsl:value-of select="/students/student  
  300.   
  301. [@id='2']/ProductID"/>  
  302. <?xml version="1.0" encoding="gb2312"?>  
  303. <xsl:stylesheet   
  304.   
  305. xmlns:xsl="http://www.w3.org/TR/WD-xsl">  
  306. <xsl:template match="/">  
  307. <center> <h1>id号是"2"的厂家的产品ID是:  
  308.   
  309. <xsl:value-of select="/NewDataSet/Table  
  310.   
  311. [@id='2']/ProductID"/></h1></center>  
  312.  </xsl:template>  
  313. </xsl:stylesheet>  
  314.   
  315. 有些如果在Table下还有节点,要显示这个节点下的东西  
  316.   
  317. xsl就该如下  
  318. <?xml version="1.0"?>  
  319. <xsl:stylesheet   
  320.   
  321. xmlns:xsl="http://www.w3.org/TR/WD-xsl">  
  322. <xsl:template match="/">  
  323.     <html>  
  324.      <body>  
  325.        <center>  
  326.        <h2>the notepad</h2>  
  327.        <table border="1">  
  328.            <tr>  
  329.                 <td>随便写</td>  
  330.            </tr>  
  331.       <xsl:for-each   
  332.   
  333. select="NewDataSet/Table/xx/*">  
  334.            <tr>  
  335.                 <td><xsl:value-of   
  336.   
  337. select="."/></td>  
  338.             </tr>  
  339.       </xsl:for-each>  
  340.        </table>  
  341.        </center>  
  342.      </body>  
  343.     </html>  
  344. </xsl:template>  
  345. </xsl:stylesheet>  
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值