CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
【经验总结】不能实施并行处理的情况 浅谈并行编程中的任务分解模式
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

读取XM文件中的信息!SUPER EASY.

楼主kingofdsc(上帝)2004-09-25 10:29:29 在 .NET技术 / ASP.NET 提问

<?xml   version="1.0"   encoding="utf-8"   ?>    
   
   
  <dynamic_Table_Head>  
   
  <linage_Number   name="linage"   count="3"/>  
   
  <parent_Node       name="LAND_RESOURCE"   caption="1.土地资源"   colCount="11">  
          <child_Node   name="LAND_AREA"   caption="国土面积"   rowspan="1"   colspan="7"   row="0"   col="0"/>  
           
                    <child_Node   name="PLAIN_AREA"   caption="平原面积"         rowspan="1"   colspan="1"   row="1"   col="0"/>        
                    <child_Node   name="HIGH_AREA"   caption="高原面积"           rowspan="1"   colspan="1"   row="1"   col="1"/>    
                    <child_Node   name="BASIN_AREA"   caption="盆地面积"         rowspan="1"   colspan="1"   row="1"   col="2"/>    
                    <child_Node   name="MOUND_AREA"   caption="丘陵面积"         rowspan="1"   colspan="1"   row="1"   col="3"/>    
                    <child_Node   name="HILL_AREA"   caption="山地面积"           rowspan="1"   colspan="1"   row="1"   col="4"/>    
                    <child_Node   name="WOOD_AREA"   caption="森林面积"           rowspan="1"   colspan="1"   row="1"   col="5"/>    
                    <child_Node   name="CROPLAND_AREA"   caption="耕地面积"   rowspan="1"   colspan="1"   row="1"   col="6"/>    
                     
          <child_Node   name="SEA_AREA"   caption="海域面积"               rowspan="2"   colspan="1"   row="1"   col="7"/>  
          <child_Node   name="ISLAND_AREA"   caption="岛屿面积"         rowspan="2"   colspan="1"   row="1"   col="8"/>  
          <child_Node   name="ISLAND_NUMBER"   caption="岛屿数量"     rowspan="2"   colspan="1"   row="1"   col="9"/>        
          <child_Node   name="COAST_LENGTH"   caption="海岸线长度"   rowspan="2"   colspan="1"   row="1"   col="10"/>                        
  </parent_Node>  
   
    </dynamic_Table_Head>  
   
  给写个ASP.NET读取这个XML中中每个节点属性的数据的   例子嘛!小弟没用过XML,急需! 问题点数:50、回复次数:9Top

1 楼btut2004(养鱼炒股)回复于 2004-09-25 10:41:45 得分 10

XMLDocument   xmldoc   =   new   XMLDocument();  
  xmldoc.Read(@"c:\1.xml");  
  xmlNode   xn   =   xmldoc.selectSingleNodes("chile_Node");Top

2 楼rickjelly2004(每逢佳节倍思亲-------------快乐生活)回复于 2004-09-25 11:15:40 得分 10

http://community.csdn.net/Expert/topic/3337/3337412.xml?temp=.2571375Top

3 楼kingofdsc(上帝)回复于 2004-09-25 11:16:32 得分 0

楼上的   我有多个chile_Node   怎么读啊?循环?   还有我怎么把属性读出来哦。给个例子啊。Top

4 楼rickjelly2004(每逢佳节倍思亲-------------快乐生活)回复于 2004-09-25 11:19:14 得分 10

private   void   btnLoad_Click(object   sender,   System.EventArgs   e)  
   
          {  
   
              XmlTextReader   reader   =   new   XmlTextReader(  
   
                  Server.MapPath("mycompany.xml"));  
   
               
   
              reader.WhitespaceHandling   =   WhitespaceHandling.None;  
   
              XmlDocument   xmlDoc   =   new   XmlDocument();  
   
              //将文件加载到XmlDocument对象中  
   
              xmlDoc.Load(reader);  
   
              //关闭连接  
   
              reader.Close();  
   
              //向listbox中添加代表文档的元素  
   
              lbNodes.Items.Add("XML   Document");  
   
              //查找根节点,并将它及它的子节点一同添加到listbox中  
   
              XmlNode   xnod   =   xmlDoc.DocumentElement;  
   
              AddWithChildren(xnod,1);  
   
          }  
   
           
   
          private   void   AddWithChildren(XmlNode   xnod,   Int32   intLevel)  
   
          {  
   
              //将节点及它的子节点一同添加到listbox中  
   
              //intLevel   控制缩进的深度  
   
              XmlNode   xnodWorking;  
   
              String   strIndent   =   new   string('   ',2   *   intLevel);  
   
              //如果节点有值,读取它的值  
   
              string   strValue   =   (string)   xnod.Value;  
   
              if(strValue   !=   null)  
   
              {  
   
                  strValue   =   "   :   "   +   strValue;  
   
              }  
   
              //将节点的详细信息添加到ListBox中  
   
              lbNodes.Items.Add(strIndent   +   xnod.Name   +   strValue);  
   
              //如果是元素节点,获取它的属性  
   
              if   (xnod.NodeType   ==   XmlNodeType.Element)  
   
              {  
   
                  XmlNamedNodeMap   mapAttributes   =   xnod.Attributes;  
   
                  //将节点属性添加到ListBox中  
   
                  foreach(XmlNode   xnodAttribute   in   mapAttributes)  
   
                  {  
   
                      lbNodes.Items.Add(strIndent   +   "   "   +   xnodAttribute.Name   +    
   
                          "   :   "   +   xnodAttribute.Value);  
   
                  }  
   
                  //如果还有子节点,就递归地调用这个程序  
   
                  if(xnod.HasChildNodes)  
   
                  {  
   
                      xnodWorking   =   xnod.FirstChild;  
   
                      while   (xnodWorking   !=   null)  
   
                      {  
   
                          AddWithChildren(xnodWorking,   intLevel   +1);  
   
                          xnodWorking   =   xnodWorking.NextSibling;  
   
                      }  
   
                  }  
   
              }  
   
          }  
   
      }  
  Top

5 楼rickjelly2004(每逢佳节倍思亲-------------快乐生活)回复于 2004-09-25 11:20:23 得分 10

执行删除、改名、插入操作  
        实现了拖放操作就已经完了最难的部分,但是出于完整性考虑,还应该提供一些更好的基本的编辑功能。下面仅仅用四行代码就可以实现删除操作:  
  [C#]  
        string   xpath_query   =    
              buildXPathQuery(this.SelectedNode);  
        System.Xml.XmlNode   node   =    
              xml_document.DocumentElement.SelectSingleNode(  
              xpath_query);  
        node.ParentNode.RemoveChild(node);  
        SelectedNode.Remove();  
         
     
   
        [VB]  
        Dim   xpath_query   As   String   =   _  
              buildXPathQuery(Me.SelectedNode)  
              Dim   node   As   System.Xml.XmlNode   =   _  
                    xml_document.DocumentElement.SelectSingleNode(   _  
                    xpath_query)  
              node.ParentNode.RemoveChild(node)  
              SelectedNode.Remove()  
  重命名操作需要更多的一些考虑,你可以调用buildXPathQuery   去查找那个文件夹正在被编辑,还有如何确定是哪一个属性,如何确定被显示名称相应的返回结构的元素或者子元素?这是一个误导的问题,XPath   filte函数已经被定义了,你只需应用现面的转换就可以了:  
  [C#]  
        private   void   XmlTreeView_AfterLabelEdit(object   sender,    
              System.Windows.Forms.NodeLabelEditEventArgs   e)  
        {  
              string   xpath_query   =   buildXPathQuery(e.Node);  
              System.Xml.XmlNode   node   =    
                    xml_document.DocumentElement.SelectSingleNode(  
                    xpath_query);  
              System.Xml.XmlNode   label   =    
                    node.SelectSingleNode(xpath_filter);  
              label.Value   =   e.Label;  
        }        
         
     
   
        [VB]  
        Private   Sub   XmlTreeView_AfterLabelEdit(   _  
              ByVal   sender   As   Object,   _  
              ByVal   e   As    
              System.Windows.Forms.NodeLabelEditEventArgs)   _  
              Handles   MyBase.AfterLabelEdit  
         
              Dim   xpath_query   As   String   =   buildXPathQuery(e.Node)  
              Dim   node   As   System.Xml.XmlNode   =   _  
                    xml_document.DocumentElement.SelectSingleNode(   _  
                    xpath_query)  
              Dim   label   As   System.Xml.XmlNode   =    
                    node.SelectSingleNode(xpath_filter)  
              label.Value   =   e.Label  
        End   Sub  
  最后一个挑战就是如何按照需求创建一个新的文件夹。query   filter   允许用户用一组文件夹而不是xml元素操作xml文档。这样对你想在那些文件夹周围进行移动很有帮助的,而且它还可以告诉在哪里插入一个文件夹,但是它不能告诉你这个文件夹应该包含什么东西,你应该猜测文档中的所有文件夹是否含有相同的结构或者内容。但是我们的目标是创建一个不需要任何预定的显示xml   方法。因此,我选择将这些怎人委托给应用程序控制。例如,客户端代码可以下面这样写:        
  [C#]  
        System.Xml.XmlDocument   insert_fragment   =    
              new   System.Xml.XmlDocument();  
        insert_fragment.LoadXml(  
              "<product   id='New   Item'>"   +    
              "<description/><ordercode/><price/>"   +    
              "<image/></product>");  
               
        //   The   TreeView   uses   XmlInsertionNode   to   add    
        //   a   new   folder   to   the   tree's   underlying   XML    
        //   document   on   request  
        xmlTreeView1.XmlInsertionNode   =    
        insert_fragment.DocumentElement;  
         
     
   
        [VB]  
        Dim   insert_fragment   As   New   System.Xml.XmlDocument()  
        insert_fragment.LoadXml("   &   _  
              "<product   id='New   Item'>"   &   _  
              "<description/><ordercode/>"<price/>"   &   _  
              "<image/></product>")  
        xmlTreeView1.XmlInsertionNode   =   _  
              insert_fragment.DocumentElement  
  treeview   控件可以缓存一个结构的副本,将它作为一个临时变量来创建一个新的文件夹集合。你所要做的仅仅是确保被定义得文件夹可以被filter   query   识别,否则treeview   将不能显示它。因为对于我们操作的文档,xml通常是外部的(external)。在我使用它之前需要导入到文档中  
     
     
        [C#]  
        //   First   you   need   to   clone   the   node   template,   and    
        //   import   it,   because   it   originates   from   a   different    
        //   document  
        System.Xml.XmlNode   copy_node   =   new_node.Clone();  
        System.Xml.XmlNode   insert_node   =    
              xml_document.ImportNode(copy_node,   true);  
                                       
        //   Next   locate   which   node   should   be   its   parent,   and    
        //   insert   it  
        string   xpath_query   =    
              buildXPathQuery(this.SelectedNode);  
        System.Xml.XmlNode   node   =    
              xml_document.DocumentElement.SelectSingleNode(  
              xpath_query);  
        node.AppendChild(insert_node);  
                                             
        //   Finally,   apply   the   xpath   filter   to   determine   what    
        //   to   display  
        System.Xml.XmlNode   expr   =    
              insert_node.SelectSingleNode(xpath_filter);  
        System.Windows.Forms.TreeNode   new_child   =    
              SelectedNode.Nodes.Add(expr.Value);  
        populateTreeControl(insert_node,   new_child.Nodes);  
                                             
        //   Select   the   node,   to   force   the   tree   to   expand  
        SelectedNode   =   new_child;  
         
        //   And   start   editing   the   new   folder   name  
        suppress_label_edit   =   false;  
        new_child.BeginEdit();        
         
     
   
        [VB]  
        '   First   you   need   to   clone   the   node   template,   and    
        '   import   it,   because   it   originates   from   a   different    
        '   document.  
        Dim   copy_node   As   System.Xml.XmlNode   =   new_node.Clone()  
        Dim   insert_node   As   System.Xml.XmlNode   =   _  
              xml_document.ImportNode(copy_node,   True)  
         
        '   Next   locate   which   node   should   be   its   parent,    
        '   and   insert   it  
        Dim   xpath_query   As   String   =   _  
              buildXPathQuery(Me.SelectedNode)  
        Dim   node   As   System.Xml.XmlNode   =    
              xml_document.DocumentElement.SelectSingleNode(   _  
              xpath_query)  
        node.AppendChild(insert_node)  
         
        '   Finally,   apply   the   xpath   filter   to   determine   what    
        '   should   be  
        '   displayed  
        Dim   expr   As   System.Xml.XmlNode   =   _  
              insert_node.SelectSingleNode(xpath_filter)  
        Dim   new_child   As   System.Windows.Forms.TreeNode   =   _  
              SelectedNode.Nodes.Add(expr.Value)  
        populateTreeControl(insert_node,   new_child.Nodes)  
         
        '   Select   the   node,   to   force   the   tree   to   expand  
        SelectedNode   =   new_child  
         
        '   And   start   editing   the   new   folder   name  
        suppress_label_edit   =   False  
        new_child.BeginEdit()Top

6 楼rickjelly2004(每逢佳节倍思亲-------------快乐生活)回复于 2004-09-25 11:21:09 得分 10

XMLTextReader   类有一些构造程序来适应各种各样的情况,比如从一个已经存在的数据流或统一资源定位网址读取数据。最常见的是,你或许想从一个文件读取XML数据,那么也就有一个相应的构造程序来为此服务。这里有一个例子(我的所有代码例子都使用的是C#语言,如果你喜欢使用VISUAL   BASIC语言,它们转换起来很容易)。  
   
  XMLTextReader   myReader;  
  myReader   =   New   XMLTextReader("c:\data\sales.XML")    
   
    创建一个称为Read()方法的循环,这个方法的返回值总是为真,直到到达文件的底部时,返回值才变为假。换句话说,   循环在文件的开始时启动并且读入所有的节点,   一次读入一个节点,   直到到达文件的结尾:  
   
  While   (myReader.Read())   {  
  ...  
  //   在这里处理每个节点.  
  ...  
  }    
   
    每次成功调用Read()之后,XMLTextReader实例化程序包含了目前节点(即刚刚从文件中读取的那个节点)的信息。我们可以从XMLTextReader的成员中获得上述信息,就像表格1中描述的一样;并通过NodeType属性判断出当前节点的类型。在节点类型的基础上,程序的代码可以读取节点数据,检查它是否有属性,到底是忽略它还是根据程序需要进行相应的操作和处理。  
   
    当使用NodeType属性时,理解节点怎么联系到XML单元是非常重要的。例如,   看下列   XML元素:  
   
  <city>Chongqing</city>    
   
    XMLtextReader   把这个元素看作   3   个节点,顺序如下:  
   
    1.<city>标签被读为类型   XMLNodeType.Element   节点,元素的名字“city”可从   XMLTextReader   的Name属性中获得。  
   
    2.文本数据“Chongqing”被读为类型为XMLNodeType.Text的节点。数据“Chongqing   ”   可从XMLTextReader   的Value属性中取得。  
   
    3.</city>标签被读为类型为XMLNodeType.EndElement   节点。同样,元素的名称“city”可从XMLTextReader的Name属性中获得。  
   
    这是   3   种重要的节点类型,其它的类型在.NET的说明文档中有详细说明,请大家参阅相关资料。  
   
    如果XMLTextReader遇到一个错误,   例如出现违反XML句法的情况,它抛出一个System.XML.XMLException类型的异常。使用这个类的代码应该总是被保护   (   在Try……Catch块中),就像你以后在演示程序中看到的一样。  
   
    本文只是一篇相当简单的介绍XMLTextReader   类的文章,XMLTextReader类有相当多的成员,在这里不可能一一述及。当读入XML数据时,XMLTextReader能提供相当强的灵活性。即便如此,我仍然进行了大量的论述,以保证读者能编制程序来实现现实世界中经常要求完成的任务,也就是从一个XML文件读取数据然后以HTML的格式输出,从而实现在浏览器中的显示。  
   
    这个ASP.NET程序(脚本)在服务器上运行并产生一个HTML页面返回浏览器。这段脚本程序在代码段   1   给出,它用来工作使用的   XML   数据文件在代码段   2给出。你能看到这个   XML   文件包含一份表示联系关系的列表;程序的目标即是将这个列表显示出来,为了更容易我们观察,这些列表已经被格式化了。  
   
    运行程序:  
   
    1.   将代码段1存为XMLTextReader.ASPx文件,将代码段2存为XMLData.XML文件。  
   
    2.   把这两个文件都放在一个已经安装好.NET   框架的网络服务器的虚拟文件夹中。  
   
    3.   打开   Internet   Explorer   并且浏览这个ASPx文件,例如,在一个局域网服务器上,   URL   将是   http://localhost/xmltextreader.ASPx   。  
   
    程序工作的大部分都由XMLDisplay   类来做,尤其是被ProcessXML()方法完成的。它每次读取一个节点XML数据,对于感兴趣的元素,节点数据和后跟冒号的节点名将和相应的HTML格式化标签一起写入输出结果中。在这阶段,“输出结果”由一个HTML文本暂时储存在其中的StringBuilder对象构成。  
   
    ProcessXML()方法是从LoadDocument()方法调用的。这个方法执行的任务是产生一个XMLTextReader实例化程序并在调用ProcessXML之前装载XML文件。它同时也处理异常,随后产生错误的信息并在浏览器中显示出来。最终该方法返回一个字符串,这个字符串或者包含产生的HTML内容,或者如果异常发生的话就包含出错信息,。  
   
    程序执行以Page_Load()程序开始,当浏览器请求浏览这个页面时,这一步会自动执行。这里的代码实例化了XMLDisplay   类并调用它的LoadDocument()方法。如果一切运行正常的话,格式化的HTML形式的返回值将被拷贝到页面的一个<div>标签中,生成的HTML文档被送回到浏览器中并显示出来。  
   
    其他的.NET   框架的类,比如XMLDocument类在读取XML数据方面表现如何呢?XMLDocument   类与XMLTextReader   类不同,它在存储器中创建整个XML文档的节点树。这样就可以随机的获得XML数据(与XMLTextReader   类获得数据的线性方式正好相反),并且在修改XML文件的数据和结构时,具有非常完美的灵活性。另外,XMLDocument允许执行XSLT   转变,不过,这些额外的功能是以运行速度的降低和系统资源的更多占用为代价的。  
   
    代码段1:XmlTextReader.aspx  
   
  <%@   Import   Namespace="System.Xml"   %>  
   
  <script   language="C#"   runat=server>  
   
  public   class   XmlDisplay  
  file://这个类读入并处理XML文件。  
  {  
   
  public   string   LoadDocument(String   XmlFileName)   {  
  XmlTextReader   xmlReader   =   null;  
  StringBuilder   html   =   new   StringBuilder();  
  try   {  
  file://创建XMLTextReader的实例。  
  xmlReader   =   new   XmlTextReader(XmlFileName);  
  //   处理XML文件  
  html.Append(ProcessXml(xmlReader));  
  }  
  catch   (XmlException   ex){  
  html.Append("发生一个XML异常:"   +    
  ex.ToString());  
  }    
  catch   (Exception   ex){  
  html.Append("发生一个普通异常:"   +    
  ex.ToString());  
  }    
  finally    
  {  
  if   (xmlReader   !=   null)  
  xmlReader.Close();  
  }  
  return   html.ToString();  
  }  
   
  private   string   ProcessXml(XmlTextReader   xmlReader)    
  {  
  StringBuilder   temp   =   new   StringBuilder();  
   
  file://这个方法读入XML文件并生成输出的HTML文档。  
  while   (   xmlReader.Read()   )    
  {  
  //   处理一个元素节点的起始。  
  if   (xmlReader.NodeType   ==   XmlNodeType.Element)    
  {    
  file://忽略<people>和<person>元素  
  if   ((xmlReader.Name   !=   "person")   &&   (xmlReader.Name   !=   "people"))    
  {  
  file://如果是一个<category>元素,开始一个新的段落  
  if   (   xmlReader.Name   ==   "category"   )  
  temp.Append("<p>");  
  file://添加元素名到输出中  
  temp.Append(   xmlReader.Name   +   ":   "   );  
  }  
  }  
  //   处理文本节点  
  else   if   (xmlReader.NodeType   ==   XmlNodeType.Text)    
  temp.Append(xmlReader.Value   +   "<br>");  
  file://处理元素节点的结尾  
  else   if   (xmlReader.NodeType   ==   XmlNodeType.EndElement)    
  {  
  file://如果是<email>节点,添加结束段落的标记  
  if   (   xmlReader.Name   ==   "email"   )    
  temp.Append("</p>");    
  }    
  }//结束while循环  
   
  return   temp.ToString();  
   
  }   file://结束ProcessXML方法  
   
  }   file://结束XmlDisplay类  
   
  private   void   Page_Load(Object   sender,   EventArgs   e){  
  file://创建XmlDisplay类的实例  
  XmlDisplay   XmlDisplayDemo   =   new   XmlDisplay();  
  output.InnerHtml   =   XmlDisplayDemo.LoadDocument(Server.MapPath("XMLData.xml"));  
  }  
  </script>  
  <html>  
  <head>  
  </head>  
  <body>  
  <h2>演示XmlTextReader类</h2>  
  <div   id="output"   runat="server"/>  
  </body>  
  </html>  
   
   
   
    代码段2:XMLData.xml  
   
  <?xml   version="1.0"   encoding="gb2312"?>  
  <people>  
  <person>  
  <category>朋友</category>  
  <name>方舟</name>  
  <phone>111-222-333</phone>  
  <email>tjfangzhou@yesky.com</email>  
  </person>  
  <person>  
  <category>家人</category>  
  <name>妈妈</name>  
  <phone>555-666-7777</phone>  
  <email>mother@family.com</email>  
  </person>  
  <person>  
  <category>家人</category>  
  <name>爸爸</name>  
  <phone>123-456-7890</phone>  
  <email>father@family.com</email>  
  </person>  
  <person>  
  <category>朋友</category>  
  <name>静静</name>  
  <phone>999-999-9999</phone>  
  <email>jingjing@girlfriend.com</email>  
  </person>  
   
  </people>    
  Top

7 楼rickjelly2004(每逢佳节倍思亲-------------快乐生活)回复于 2004-09-25 11:21:58 得分 0

已知有一个XML文件(bookstore.xml)如下:    
  <?xml   version="1.0"   encoding="gb2312"?>    
  <bookstore>    
  <book   genre="fantasy"   ISBN="2-3631-4">    
  <title>Oberon's   Legacy</title>    
  <author>Corets,   Eva</author>    
  <price>5.95</price>    
  </book>    
  </bookstore>    
   
  1、往<bookstore>节点中插入一个<book>节点:    
  XmlDocument   xmlDoc=new   XmlDocument();    
  xmlDoc.Load("bookstore.xml");    
  XmlNode   root=xmlDoc.SelectSingleNode("bookstore");//查找<bookstore>    
  XmlElement   xe1=xmlDoc.CreateElement("book");//创建一个<book>节点    
  xe1.SetAttribute("genre","李赞红");//设置该节点genre属性    
  xe1.SetAttribute("ISBN","2-3631-4");//设置该节点ISBN属性    
   
  XmlElement   xesub1=xmlDoc.CreateElement("title");    
  xesub1.InnerText="CS从入门到精通";//设置文本节点    
  xe1.AppendChild(xesub1);//添加到<book>节点中    
  XmlElement   xesub2=xmlDoc.CreateElement("author");    
  xesub2.InnerText="候捷";    
  xe1.AppendChild(xesub2);    
  XmlElement   xesub3=xmlDoc.CreateElement("price");    
  xesub3.InnerText="58.3";    
  xe1.AppendChild(xesub3);    
   
  root.AppendChild(xe1);//添加到<bookstore>节点中    
  xmlDoc.Save("bookstore.xml");    
  //===============================================    
  结果为:    
  <?xml   version="1.0"   encoding="gb2312"?>    
  <bookstore>    
  <book   genre="fantasy"   ISBN="2-3631-4">    
  <title>Oberon's   Legacy</title>    
  <author>Corets,   Eva</author>    
  <price>5.95</price>    
  </book>    
  <book   genre="李赞红"   ISBN="2-3631-4">    
  <title>CS从入门到精通</title>    
  <author>候捷</author>    
  <price>58.3</price>    
  </book>    
  </bookstore>    
   
  2、修改节点:将genre属性值为“李赞红“的节点的genre值改为“update李赞红”,将该节点的子节点<author>的文本修改为“亚胜”。    
  XmlNodeList   nodeList=xmlDoc.SelectSingleNode("bookstore").ChildNodes;//获取bookstore节点的所有子节点    
  foreach(XmlNode   xn   in   nodeList)//遍历所有子节点    
  {    
  XmlElement   xe=(XmlElement)xn;//将子节点类型转换为XmlElement类型    
  if(xe.GetAttribute("genre")=="李赞红")//如果genre属性值为“李赞红”    
  {    
  xe.SetAttribute("genre","update李赞红");//则修改该属性为“update李赞红”    
   
  XmlNodeList   nls=xe.ChildNodes;//继续获取xe子节点的所有子节点    
  foreach(XmlNode   xn1   in   nls)//遍历    
  {    
  XmlElement   xe2=(XmlElement)xn1;//转换类型    
  if(xe2.Name=="author")//如果找到    
  {    
  xe2.InnerText="亚胜";//则修改    
  break;//找到退出来就可以了    
  }    
  }    
  break;    
  }    
  }    
   
  xmlDoc.Save("bookstore.xml");//保存。    
  //==================================================    
  最后结果为:    
  <?xml   version="1.0"   encoding="gb2312"?>    
  <bookstore>    
  <book   genre="fantasy"   ISBN="2-3631-4">    
  <title>Oberon's   Legacy</title>    
  <author>Corets,   Eva</author>    
  <price>5.95</price>    
  </book>    
  <book   genre="update李赞红"   ISBN="2-3631-4">    
  <title>CS从入门到精通</title>    
  <author>亚胜</author>    
  <price>58.3</price>    
  </book>    
  </bookstore>    
   
  3、删除   <book   genre="fantasy"   ISBN="2-3631-4">节点的genre属性,删除   <book   genre="update李赞红"   ISBN="2-3631-4">节点。    
  XmlNodeList   xnl=xmlDoc.SelectSingleNode("bookstore").ChildNodes;    
   
  foreach(XmlNode   xn   in   xnl)    
  {    
  XmlElement   xe=(XmlElement)xn;    
  if(xe.GetAttribute("genre")=="fantasy")    
  {    
  xe.RemoveAttribute("genre");//删除genre属性    
  }    
  else   if(xe.GetAttribute("genre")=="update李赞红")    
  {    
  xe.RemoveAll();//删除该节点的全部内容    
  }    
  }    
  xmlDoc.Save("bookstore.xml");    
  //===========================================    
  最后结果为:    
  <?xml   version="1.0"   encoding="gb2312"?>    
  <bookstore>    
  <book   ISBN="2-3631-4">    
  <title>Oberon's   Legacy</title>    
  <author>Corets,   Eva</author>    
  <price>5.95</price>    
  </book>    
  <book>    
  </book>    
  </bookstore>    
   
  4、显示所有数据。    
  XmlNode   xn=xmlDoc.SelectSingleNode("bookstore");    
   
  XmlNodeList   xnl=xn.ChildNodes;    
   
  foreach(XmlNode   xnf   in   xnl)    
  {    
  XmlElement   xe=(XmlElement)xnf;    
  Console.WriteLine(xe.GetAttribute("genre"));//显示属性值    
  Console.WriteLine(xe.GetAttribute("ISBN"));    
   
  XmlNodeList   xnf1=xe.ChildNodes;    
  foreach(XmlNode   xn2   in   xnf1)    
  {    
  Console.WriteLine(xn2.InnerText);//显示子节点点文本    
  }    
  }Top

8 楼BearRui(孤熊 | 带你去看海!)回复于 2004-09-25 11:36:22 得分 0

首先因为你的XML中有中文,所以你必须将第一句声明改为:  
  <?xml   version="1.0"   encoding="gb2312"   ?>    
  ------------------------------------  
    XmlTextReader   read=new   XmlTextReader(@"e:\test.xml");  
   
  while(read.Read())  
  {  
  if(read.HasAttributes   &&   read.NodeType==XmlNodeType.Element)  
  {  
          while(read.MoveToNextAttribute())  
  Response.Write(read.Name+"=\""+read.Value+"\"       ");  
  }  
  }  
   
  read.Close();Top

9 楼MyXQ(重剑)回复于 2005-06-24 16:48:53 得分 0

markTop

相关问题

  • 文件读取?
  • 读取文件?
  • 读取数据
  • 如何读取
  • session 读取(C#)
  • DLL的读取
  • 文件读取~
  • 读取描述?
  • php读取EXCEL
  • 文件读取。。。。。。

关键词

  • .net
  • asp.net
  • c#
  • 节点
  • 属性
  • 文件夹
  • xmlnode
  • xe
  • xnod
  • xmldoc

得分解答快速导航

  • 帖主:kingofdsc
  • btut2004
  • rickjelly2004
  • rickjelly2004
  • rickjelly2004
  • rickjelly2004

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
惹火投票。。火热进行中...
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
CSDN网站24小时值班电话:13552009689
Copyright © 2000-2009, CSDN.NET, All Rights Reserved
GongshangLogo