xmlDocument方法的基本使用说明

在项目中第一次用xmldocument,刚用起来还有点晕,下面是自己的一些见解,呵呵

原来都是用 datatable来进行数据筛选的,select() ,这次项目中用xmldoucment

 XmlElement elementHotel = xmlHotelInfo.DocumentElement;//得到首节点后的所有节点元素;

  XmlNode nodeHotel = elementHotel.ChildNodes.Item( 0 );//得到第一个节点

nodeHotel.SelectNodes("//HotelId")[0].InnerText//在节点中搜索 节点名为 HoelId的第一个节点的innerText

SelectNodes("//HotelId/HotelRoom")和SelectNodes("//HotelRoom")的区别是,//HoelId//HotelRoom搜索HotelId节点下的HotelRoom。而//HotelRoom是搜索所有节点的//HotelRoom。

selectNodes( "//HotelId")[0] == selectNodes( "//HotelId").Item( 0 )

elementHotel.SelectNodes("descendant::HotelRoom[HotelId = " + HotelId + "]");//搜索节点HotelRoom下,节点为HoelId且innerText = HotelId 的节点集合。

注意:InnerText ,InnerXml, OutXml的区别。

//在集合中搜索节点数据

foreach ( XmlNode PriceNode in xmlDocPrice.SelectNodes("//TotalPrice") )
                            {
                                if ( isFisrt )
                                {
                                    dMinPrcie       = Convert.ToDecimal( PriceNode.InnerText );
                                    strPriceUnion   = PriceNode.NextSibling.InnerText;
                                    isFisrt         = false;
                                }
                                else if (dMinPrcie > Convert.ToDecimal(PriceNode.InnerText))
                                {
                                    dMinPrcie       = Convert.ToDecimal( PriceNode.InnerText );
                                    strPriceUnion   = PriceNode.NextSibling.InnerText;//这样是正确的

//如果:  strPriceUnion   = PriceNode.SelectNodes("//PriceUnit")[0].InnerText//错误,每次都是第一个节点得到

的PriceUnit.InnerText,这个要注意,如果通过 for循环就简单些,PriceNode.SelectNodes("//PriceUnit")[i].InnerText 因为你在select 时候,还是针对,此nodeList的document的select,返回的都是同一个list.

}
                            }

for循环如下即可:

for ( int j = 0; j < nodeList.Count; j++ )
                    {
                        XmlNode priceNode = nodeList.Item( j );
                        start   = Convert.ToDateTime( priceNode.SelectNodes("//StartTime")[j].InnerText );
                        end     = Convert.ToDateTime( priceNode.SelectNodes("//EndTime")[j].InnerText );

                        if ( start <= NowDay && end >= NowDay )
                        {
                            isExistPrice            = true;//房型在价格区间内有价格
                            strMemberPrice          = priceNode.SelectNodes("//MemberPrice")[j].InnerText;
                            strWeekendPrice         = priceNode.SelectNodes("//WeekendPrice")[j].InnerText;
                            strUnionMemberPrice     = priceNode.SelectNodes("//UnionMemberPrice")[j].InnerText;
                            strUnionWeekendPrice    = priceNode.SelectNodes("//UnionWeekendPrice")[j].InnerText;
                            break;
                        }
                    }
因为是初次用,不知道还有什么好的方法进行筛选数据,这样有些笨,但是用xml 处理完数据可以删除,可以提高速度

  foreach ( XmlNode node in nodeRoomList )
                            {
                                xmlDocPrice.DocumentElement.AppendChild( xmlDocPrice.ImportNode( node, true ) );//插入节点
                                elementRoomPrice.RemoveChild( node );//删除节点
                            }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值