2014-01-08 18 views
0

我有一个字符串设置为Xml。这是一个数据集,我填充然后返​​回字符串getXml()。尽管xml循环并显示警报中的值

我想抓取子类别下的所有值,并显示每个子类别的警报显示。

我想是这样的,但迟迟不来右:

$.parseXML(xml).find('Table').each(function(index){ 
      var SubCategorySystem = $(this).find('SubCategorySystem').text(); 
      var SubCategory = $(this).find('SubCategory').text(); 
      alert(SubCategory); 
     }); 

这是我的字符串的样子。

<NewDataSet> 
    <Table> 
    <SubCategorySystem>Building</SubCategorySystem> 
    <SubCategory>Building</SubCategory> 
    </Table> 
    <Table> 
    <SubCategorySystem>Electrical</SubCategorySystem> 
    <SubCategory>Electrical</SubCategory> 
    </Table> 
    <Table> 
    <SubCategorySystem>Engineering</SubCategorySystem> 
    <SubCategory>Engineering</SubCategory> 
    </Table> 
    <Table> 
    <SubCategorySystem>Inspection</SubCategorySystem> 
    <SubCategory>Inspection</SubCategory> 
    </Table> 
    <Table> 
    <SubCategorySystem>Landscaping</SubCategorySystem> 
    <SubCategory>Landscaping</SubCategory> 
    </Table> 
    <Table> 
    <SubCategorySystem>Mechanical</SubCategorySystem> 
    <SubCategory>Mechanical</SubCategory> 
    </Table> 
    <Table> 
    <SubCategorySystem>Painting</SubCategorySystem> 
    <SubCategory>Painting</SubCategory> 
    </Table> 
    <Table> 
    <SubCategorySystem>Plumbing</SubCategorySystem> 
    <SubCategory>Plumbing</SubCategory> 
    </Table> 
    <Table> 
    <SubCategorySystem>Safety &amp; Security</SubCategorySystem> 
    <SubCategory>Safety &amp; Security</SubCategory> 
    </Table> 
</NewDataSet>" 
+0

什么也正是不工作这两个功能? – melancia

回答

1

使用此功能加载XML

function loadXMLString(txt) { 
     try { 
      xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 
      xmlDoc.async = "false"; 
      xmlDoc.loadXML(txt); 
      return (xmlDoc); 
     } 
     catch (e) { 
      try { 
       parser = new DOMParser(); 
       xmlDoc = parser.parseFromString(txt, "text/xml"); 
       return (xmlDoc); 
      } 
      catch (e) { 
       alert(e.message) 
      } 
     } 
     return (null); 
    } 

,然后调用这样的功能:

var xmlData = loadXMLString(originalxml); 

现在你可以简单地做到这一点:

var data = xmlData.getElementsByTagName('SubCategory'); 
for(var i=0;i<data.length;i++) 
{ 
    alert(data[i].textContent); 
} 

Check out this fiddle

0

我认为错误的部分是$.parseXML(xml)创建XML Document但它不会返回它作为一个对象,所以你将不能够使用就可以了jQuery methods

包装在一个对象,它应该工作

$($.parseXML(xml)).find('Table') 
0

你可以参考第一

function getExtendedNodeValue(nodeName, xmlNode, i) 
{ 
    var node = ""; 

    if(typeof(xmlNode.getElementsByTagName(nodeName)[i]) != "undefined" && xmlNode.getElementsByTagName(nodeName)[i].hasChildNodes()) 
    node = xmlNode.getElementsByTagName(nodeName)[i].firstChild.nodeValue; 

    return node; 
} 

function getNodeLength(nodeName, xmlNode){ 
    return xmlNode.getElementsByTagName(nodeName).length; 
} 

而下面你可以遍历

var len = getNodeLength("Table",xml); 
var SubCategorySystem = ""; 
var SubCategory = ""; 

for(i=0;i<len;i++) 
{ 
    SubCategorySystem = getExtendedNodeValue("SubCategorySystem",xml,i); 
    SubCategory = getExtendedNodeValue("SubCategory",xml,i); 

    console.log(SubCategorySystem + " == " + SubCategory); 
} 

你可以找到这个FIDDLE