处理XML文件的小结

处理XML文件的小结

1.  取节点的值

1) 同一层次的

a. 循环遍历

          private string processXpathQuery(XPathNavigator xpnav, String xPathQuery)

         {

              string strReturn="" ;

              xpnav.MoveToFirstChild();

              do

              {

                   if (xpnav.LocalName==xPathQuery)

                   {

                        strReturn= xpnav.Value.ToString().Trim();

                       break;

                   }

        

              }while(xpnav.MoveToNext());

             

              xpnav.MoveToParent() ;

              return strReturn;

 

     }

 

string strReturn = processXpathQuery(xpnav, "userId");

 

b. XpathNodeIterator.select来查

          private string processXpathQuery(XPathNavigator xpnav, String xPathQuery)

         {                      

              //XPath Reference: http://www.zvon.org/xxl/XPathTutorial/General/examples.html

              //Using technique below, one can iterate through the set of nodes

              //associated with a given Xpath query and process them accordingly.

              XPathNodeIterator xpn  = xpnav.Select(xPathQuery);

              if(xpn.MoveNext())

                   return xpn.Current.Value;

              else

                   return string.Empty ;

     }

string strReturn = processXpathQuery(xpnav, " descendant::userId");

 

2) 不同层次的

a.       循环递归遍历

private void processRequestXML(XPathNavigator xpnav,int level)

         {

              xpnav.MoveToFirstChild();

              do

              {

                   switch (xpnav.LocalName)

                   {

                       case "userId":

                            myReq.UserId=xpnav.Value.ToString().Trim();

                            break;

                       case "password":

                            myReq.Password =xpnav.Value.ToString().Trim();

                            break;

                       case "flightNumber":

                            if (level==0)

                                 myReq.FlightNumber=xpnav.Value.ToString().Trim();

                            else if(level==4)

                                 myFlight.FlightNumber=xpnav.Value.ToString().Trim();

                            break;

                       case "reservation":

                            processRequestXML(xpnav,level+1);

                            xpnav.MoveToParent();

                            break;

                            //reservation child nodes

                       case "orderID":

                            myReservation.OrderId =xpnav.Value.ToString().Trim();

                            break;

                        default:

                            break;

                   }   

              }while(xpnav.MoveToNext());

     }

processRequestXML(xpnav,0);

 

2.  把字符串转成XML文档类型

StringReader sr = new StringReader(myXML);

              XPathDocument xp = new XPathDocument(sr);

              XPathNavigator xpnav = xp.CreateNavigator();

              xpnav.MoveToFirstChild();

 

3.  XML文档类型转成字符串

         public string responseXML(string node, string message)

         {

 

              StringBuilder sb = new StringBuilder();

              StringWriter sw = new StringWriter(sb);

              XmlTextWriter xw = new XmlTextWriter(sw);

        

              xw.Formatting = Formatting.Indented ;

              xw.WriteStartDocument();

              xw.WriteStartElement("ErrorMessage");

              xw.WriteElementString("Node", node);

              xw.WriteElementString("Message", message);

              xw.WriteEndElement();

              xw.WriteEndDocument();

              String sXmlResponse = sb.ToString();

 

              return sXmlResponse;

         }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值