问题描述
xml内容如下:<?xmlversion="1.0"encoding="UTF-8"?><aa><bbvalue="1"name="n1"><ccvalue="1"name="c1"/><ccvalue="2"name="c2"/></bb><bbvalue="2"name="n1"><ccvalue="1"name="c1"/><ccvalue="2"name="c2"/></bb></aa>我是先取aa/bb然后用取aa/bb的value=1下面的cc节点我只会取aa/bb怎么取bb下的所有cc切点呢?//查找数据。返回一个DataView
解决方案
解决方案二:
XmlDocumentxd=newXmlDocument();xd.Load(Server.MapPath("test.xml"));XmlNodexn=xd.SelectSingleNode("//aa/bb[@value=1]");XmlNodeListxl=xn.ChildNodes;for(inti=0;i<xl.Count;i++){Response.Write(xl[i].Attributes.Item(0).Value+"<br/>");}
解决方案三:
楼上的可以,但怎么返回一个DataView呢?
解决方案四:
我是这样取的publicDataViewGetData(stringXmlPathNode){//查找数据。返回一个DataViewDataSetds=newDataSet();StringReaderread=newStringReader(objXmlDoc.SelectSingleNode(XmlPathNode).OuterXml);ds.ReadXml(read);returnds.Tables[0].DefaultView;}我这样取值取不到,出现对象引用错误DataViewa=GetData("//aa/bb[@value=1]")哪位告我下怎么用?
解决方案五:
XmlDocumentxd=newXmlDocument();xd.Load(Server.MapPath("test.xml"));XmlNodexn=xd.SelectSingleNode("//aa/bb[@value=1]");XmlNodeListxl=xn.ChildNodes;DataSetds=newDataSet();StringReadersr=newStringReader(xn.OuterXml);ds.ReadXml(sr);returnds.Tables[0].DefaultView;
解决方案六:
楼上的发的和我的一样啊,不过我那个是写到一行了,这样取到的是bb的value=1的这个节点,我要取的是bbvalue=1下的所有cc节点啊
解决方案七:
不是,我手误,打错了.将StringReadersr=newStringReader(xn.OuterXml);改为StringReadersr=newStringReader(xl.OuterXml);
解决方案八:
XmlNodexn=xd.SelectSingleNode("//aa/bb[@value=1]");XmlNodeListxl=xn.ChildNodes;xl.OuterXml就能取到bbvalue=1下的所有cc节点的值