有没有好的方法从下面的XML中找到ConID=51的PriceList节点的值,要求方法简单
<NewDataSet>
  <Table2>
    <ConID>51</ConID>
    <MemID>1</MemID>
    <LineID>28</LineID>
    <GroupID>174</GroupID>
    <ConSN>E00010905210014</ConSN>
    <State>0</State>
    <Qty>4</Qty>
    <ContactName>钱然</ContactName>
    <ContactTel>12365365236</ContactTel>
    <SalePrice>2372.0000</SalePrice>
    <ConPrice>0.0000</ConPrice>
    <TradePrice>2220.0000</TradePrice>
    <SaleMemID>22</SaleMemID>
    <SaleUserID>38</SaleUserID>
    <Creator>38</Creator>
    <CreatTime>2009-05-21T14:31:22.903+08:00</CreatTime>
    <Memo />
    <posttime>2009-05-21T14:31:22.903+08:00</posttime>
    <Deleted>false</Deleted>
    <Checked>false</Checked>
    <Payed>false</Payed>
    <TrafficID>179</TrafficID>
    <SeatIndexList>1-4号</SeatIndexList>
    <MemName>江苏东渡旅行社</MemName>
    <MemLogo>江苏东渡</MemLogo>
    <UserName>郝鹏</UserName>
    <PriceList>4个成人高标全包价</PriceList>
    <Price>2220.0000</Price>
  </Table2>
  <Table2>
    <ConID>52</ConID>
    <MemID>1</MemID>
    <LineID>28</LineID>
    <GroupID>174</GroupID>
    <ConSN>E00010905210015</ConSN>
    <State>0</State>
    <Qty>1</Qty>
    <ContactName>王维</ContactName>
    <ContactTel>13965632541</ContactTel>
    <SalePrice>388.0000</SalePrice>
    <ConPrice>0.0000</ConPrice>
    <TradePrice>350.0000</TradePrice>
    <SaleMemID>52</SaleMemID>
    <SaleUserID>71</SaleUserID>
    <Creator>71</Creator>
    <CreatTime>2009-05-21T14:32:22.84+08:00</CreatTime>
    <Memo />
    <posttime>2009-05-21T14:32:22.84+08:00</posttime>
    <Deleted>false</Deleted>
    <Checked>false</Checked>
    <Payed>false</Payed>
    <TrafficID>179</TrafficID>
    <SeatIndexList>5号</SeatIndexList>
    <MemName>康辉中央门</MemName>
    <MemLogo>康辉中央门</MemLogo>
    <UserName>王美娟</UserName>
    <PriceList>1个成人高标半包价</PriceList>
    <Price>350.0000</Price>
  </Table2>
<NewDataSet>

解决方案 »

  1.   

    用DOM 或者 SAX 都可以
      

  2.   

    var doc = new ActiveXObject("Msxml2.DOMDocument"); 
    //加载文档
    //doc.load("data.xml");//test
     var value="";
    var tables=doc.getElementsByTagName("Table2");
    for(var i=0;i<tables.length;i++)
    {
        var cNode=tables[i].getElementsByTagName("ConID");
         
        if(cNode!=null&&cNode[0]!=null&&cNode[0].firstChild!=null){    
        
             if(cNode[0].firstChild.data=="52")
             {
             
                var node=tables[i].getElementsByTagName("ConID");
                 if(node!=null&&node[0]!=null&&node[0].firstChild!=null){
                   value=node[0].firstChild.data;
                 }
                 else
                 {
                    value="";
                 }
                 break;
             }
         
         }
    }
      

  3.   

    var xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 
    xmlDoc.loadxml("messages.xml"); 
    xmlDoc.setProperty("SelectionLanguage", "XPath"); 
    var sPath = "//Table2/ConID/text()='51'"; 
    var bookNodes = xmlDoc.selectNodes(sPath);关于xpath可以看一下这里 http://www.blueidea.com/tech/program/2009/6635.asp 
      

  4.   

    var doc = new ActiveXObject("Msxml2.DOMDocument"); 
    //加载文档
    //doc.load("data.xml");//test
     var value="";
    var tables=doc.getElementsByTagName("Table2");
    for(var i=0;i<tables.length;i++)
    {
        var cNode=tables[i].getElementsByTagName("ConID");
         
        if(cNode!=null&&cNode[0]!=null&&cNode[0].firstChild!=null){    
        
             if(cNode[0].firstChild.data=="52")
             {
             
                var node=tables[i].getElementsByTagName("PriceList");  
                 if(node!=null&&node[0]!=null&&node[0].firstChild!=null){
                   value=node[0].firstChild.data;
                 }
                 else
                 {
                    value="";
                 }
                 break;
             }
         
         }
    }//因为楼主取的是同一父结点下面的另一个节点的值,所以用xpath不好取
      

  5.   

    var sPath = "//Table2/ConID/text()='51'";上面的大哥再帮我看看
      

  6.   

    var xmlDoc;
    if (window.ActiveXObject)
    {
    xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
    }
    else if (document.implementation.createDocument)
    {
    xmlDoc=document.implementation.createDocument("","",null);
    }
    else
    {
    alert('Your browser cannot handle this script');
    }
    xmlDoc.async=false;
    xmlDoc.loadXML(request.responseText);
    var x=xmlDoc.getElementsByTagName("LiveList");
    if (x.length>0)
    {
    for (var i=0;i<x.length;i++)
    {
    if (parseInt(x[i].getAttribute("ID"))>ArowNum)
    {
    document.getElementById("live").innerHTML+="<li>";
    document.getElementById("live").innerHTML+=x[i].getAttribute("ID")+":";
    ...
    document.getElementById("live").scrollTop=document.getElementById("live").scrollTop+200;
                                    ...这是我们之前用过的
    你自己看看
    根据这个改改就行
      

  7.   

    因为你是取的另一个节点,所以用Xpath是不好取的,不知道那位高手有办法,下面是我用我开始写的代码,做的测试,
    Value='4个成人高标全包价'    //load xml document 加载XML文件
        function _loadXmlDocument(xmlFilePath)
        {
          var _xmlDoc = null;
          if (!window.DOMParser && window.ActiveXObject)
          {
            var xmlDomVersions = ['MSXML2.DOMDocument.6.0','MSXML2.DOMDocument.3.0','Microsoft.XMLDOM'];
            for (var i = 0; i < xmlDomVersions.length; i++)
            {
              try
              {
                _xmlDoc = new ActiveXObject(xmlDomVersions[i]);
                break;
              }
              catch(e){}
            }
          }
          else if (document.implementation && document.implementation.createDocument)
          {
            try
            {
              _xmlDoc = document.implementation.createDocument('','',null);
            }
            catch(e){}
          }      if (_xmlDoc != null)
          {
            _xmlDoc.async = false;
            _xmlDoc.load(xmlFilePath);
          }      return _xmlDoc;
        }    //load xml string 加载 XML 字符串
        function _loadXmlString(xmlString)
        {
          var _xmlDoc = null;
          if (!window.DOMParser && window.ActiveXObject)
          {
            var xmlDomVersions = ['MSXML2.DOMDocument.6.0','MSXML2.DOMDocument.3.0','Microsoft.XMLDOM'];
            for (var i = 0; i < xmlDomVersions.length; i++)
            {
              try
              {
                _xmlDoc = new ActiveXObject(xmlDomVersions[i]);
                _xmlDoc.async = false;
                _xmlDoc.loadXML(xmlString);
                break;
              }
              catch(e){}
            }
          }
          else if (window.DOMParser && document.implementation && document.implementation.createDocument)
          {
            try
            {
              domParser = new  DOMParser();
              _xmlDoc = domParser.parseFromString(xmlString, 'text/xml');
            }
            catch(e){}
          }      return _xmlDoc;
        }
        
      function test()
      {
    var doc = _loadXmlDocument("test.xml");
    if(doc==null)
    {
        alert("加载文档失败!");
        return;
    }
     
     var value="";
    var tables=doc.getElementsByTagName("Table2");
    alert(tables.length);
    for(var i=0;i<tables.length;i++)
    {
        var cNode=tables[i].getElementsByTagName("ConID");
         
        if(cNode!=null&&cNode[0]!=null&&cNode[0].firstChild!=null){    
        
             if(cNode[0].firstChild.data=="51")
             {
             
                var node=tables[i].getElementsByTagName("PriceList");
                 if(node!=null&&node[0]!=null&&node[0].firstChild!=null){
                   value=node[0].firstChild.data;
                 }
                 else
                 {
                    value="";
                 }
                 break;
             }
         
         }
    }
    alert(value);
    }<body onload="test()">
      

  8.   


        <script>
            var xmlDoc = new ActiveXObject('Microsoft.XMLDOM');
            var xml = " <NewDataSet>  <Table2>   <ConID>51</ConID>    <MemID>1</MemID>    <LineID>28</LineID>    <GroupID>174</GroupID>    <ConSN>E00010905210014</ConSN>    <State>0</State>    <Qty>4</Qty>    <ContactName>钱然</ContactName>    <ContactTel>12365365236</ContactTel>    <SalePrice>2372.0000</SalePrice>    <ConPrice>0.0000</ConPrice>    <TradePrice>2220.0000</TradePrice>    <SaleMemID>22</SaleMemID>    <SaleUserID>38</SaleUserID>    <Creator>38</Creator>    <CreatTime>2009-05-21T14:31:22.903+08:00</CreatTime>    <Memo />    <posttime>2009-05-21T14:31:22.903+08:00</posttime>    <Deleted>false</Deleted>    <Checked>false</Checked>    <Payed>false</Payed>    <TrafficID>179</TrafficID>    <SeatIndexList>1-4号</SeatIndexList>    <MemName>江苏东渡旅行社</MemName>    <MemLogo>江苏东渡</MemLogo>    <UserName>郝鹏</UserName>    <PriceList>4个成人高标全包价</PriceList>    <Price>2220.0000</Price>  </Table2>  <Table2>    <ConID>52</ConID>   <MemID>1</MemID>    <LineID>28</LineID>    <GroupID>174</GroupID>    <ConSN>E00010905210015</ConSN>    <State>0</State>    <Qty>1</Qty>    <ContactName>王维</ContactName>    <ContactTel>13965632541</ContactTel>    <SalePrice>388.0000</SalePrice>    <ConPrice>0.0000</ConPrice>    <TradePrice>350.0000</TradePrice>    <SaleMemID>52</SaleMemID>    <SaleUserID>71</SaleUserID>    <Creator>71</Creator>    <CreatTime>2009-05-21T14:32:22.84+08:00</CreatTime>    <Memo />    <posttime>2009-05-21T14:32:22.84+08:00</posttime>    <Deleted>false</Deleted>    <Checked>false</Checked>    <Payed>false</Payed>    <TrafficID>179</TrafficID>    <SeatIndexList>5号</SeatIndexList>    <MemName>康辉中央门</MemName>    <MemLogo>康辉中央门</MemLogo>    <UserName>王美娟</UserName>    <PriceList>1个成人高标半包价</PriceList>    <Price>350.0000</Price>  </Table2></NewDataSet>"
            xmlDoc.loadXML(xml);
    //该 spath查询返回为ConID邛点
            var sPath = "//NewDataSet/Table2/ConID[text()='51']";
     //var sPath = "//NewDataSet/Table2[ConID/text()='51']"; 该spath返回为 table2节点的数据        alert(xmlDoc.getElementsByTagName("NewDataSet")[0].text);
            var bookNodes = xmlDoc.selectNodes(sPath);
            alert(bookNodes[0].text);
         </script>
      

  9.   

    不好意思没看清题目,找到节点再遍历一下子节点        var xmlDoc = new ActiveXObject('Microsoft.XMLDOM');
            var xml = " <NewDataSet>  <Table2>   <ConID>51</ConID>    <MemID>1</MemID>    <LineID>28</LineID>    <GroupID>174</GroupID>    <ConSN>E00010905210014</ConSN>    <State>0</State>    <Qty>4</Qty>    <ContactName>钱然</ContactName>    <ContactTel>12365365236</ContactTel>    <SalePrice>2372.0000</SalePrice>    <ConPrice>0.0000</ConPrice>    <TradePrice>2220.0000</TradePrice>    <SaleMemID>22</SaleMemID>    <SaleUserID>38</SaleUserID>    <Creator>38</Creator>    <CreatTime>2009-05-21T14:31:22.903+08:00</CreatTime>    <Memo />    <posttime>2009-05-21T14:31:22.903+08:00</posttime>    <Deleted>false</Deleted>    <Checked>false</Checked>    <Payed>false</Payed>    <TrafficID>179</TrafficID>    <SeatIndexList>1-4号</SeatIndexList>    <MemName>江苏东渡旅行社</MemName>    <MemLogo>江苏东渡</MemLogo>    <UserName>郝鹏</UserName>    <PriceList>4个成人高标全包价</PriceList>    <Price>2220.0000</Price>  </Table2>  <Table2>    <ConID>52</ConID>   <MemID>1</MemID>    <LineID>28</LineID>    <GroupID>174</GroupID>    <ConSN>E00010905210015</ConSN>    <State>0</State>    <Qty>1</Qty>    <ContactName>王维</ContactName>    <ContactTel>13965632541</ContactTel>    <SalePrice>388.0000</SalePrice>    <ConPrice>0.0000</ConPrice>    <TradePrice>350.0000</TradePrice>    <SaleMemID>52</SaleMemID>    <SaleUserID>71</SaleUserID>    <Creator>71</Creator>    <CreatTime>2009-05-21T14:32:22.84+08:00</CreatTime>    <Memo />    <posttime>2009-05-21T14:32:22.84+08:00</posttime>    <Deleted>false</Deleted>    <Checked>false</Checked>    <Payed>false</Payed>    <TrafficID>179</TrafficID>    <SeatIndexList>5号</SeatIndexList>    <MemName>康辉中央门</MemName>    <MemLogo>康辉中央门</MemLogo>    <UserName>王美娟</UserName>    <PriceList>1个成人高标半包价</PriceList>    <Price>350.0000</Price>  </Table2></NewDataSet>"
            xmlDoc.loadXML(xml);
            var sPath = "//NewDataSet/Table2[ConID/text()='51']";
            alert(xmlDoc.getElementsByTagName("NewDataSet")[0].text);
            var bookNodes = xmlDoc.selectNodes(sPath);
            for (var j = 0; j < bookNodes[0].childNodes.length; j++) {
                if(bookNodes[0].childNodes[j].nodeName == "PriceList")alert(bookNodes[0].childNodes[j].text);
            }