我有一个设置为Xml的字符串。这是一个数据集,我填充然后作为字符串getXml()返回。
我想获取子类别下的所有值,并有一个显示每个子类别的警报显示。
我试过这样的事情但是不能正确:
$.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 & Security</SubCategorySystem>
<SubCategory>Safety & Security</SubCategory>
</Table>
</NewDataSet>"
答案 0 :(得分: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);
}
答案 1 :(得分:0)
我认为错误的部分是$.parseXML(xml)
创建了XML Document
,但它不会将其作为对象返回,因此您无法在其上使用jQuery methods
。
将它包裹在一个对象中它应该可以正常工作
$($.parseXML(xml)).find('Table')
答案 2 :(得分: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