Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Javascript基于辅助XML值检索XML值?_Javascript_Xml - Fatal编程技术网

如何使用Javascript基于辅助XML值检索XML值?

如何使用Javascript基于辅助XML值检索XML值?,javascript,xml,Javascript,Xml,我正在使用一个函数来搜索XML代码并返回特定标记的最大值 以下是我的变量: var xmlString= "<root> <Item> <Name>AAA</Name> <ItemNo>22</ItemNo> </Item> <Item> <Name>AAA</Name> <ItemN

我正在使用一个函数来搜索XML代码并返回特定标记的最大值

以下是我的变量:

var xmlString= "<root>
    <Item>
        <Name>AAA</Name>
        <ItemNo>22</ItemNo>
    </Item>
    <Item>
        <Name>AAA</Name>
        <ItemNo>10</ItemNo>
    </Item>
    <Item>
        <Name>BBB</Name>
        <ItemNo>122</ItemNo>
    </Item>
    <Item>
        <Name>BBB</Name>
        <ItemNo>99</ItemNo>
    </Item>
</root>";

tagName = 'ItemNo';
nameVal = 'AAA';
var xmlString=”
AAA
22
AAA
10
BBB
122
BBB
99
";
标记名='ItemNo';
nameVal='AAA';
到目前为止,我能够获得ItemNo的最大值,如下所示:

// parse XML
parser = new DOMParser();
xmlDoc = parser.parseFromString(xmlString,"text/xml"); 
// get nodes from XML
var nodes = xmlDoc.getElementsByTagName(tagName); 
//array
var arr = [];
// loop through nodes and push values to arr
for (var i = 0; i < nodes.length; i++){
    arr.push(nodes[i].firstChild.data)
}
// get max value from arr
var maxVal = Math.max.apply(null,arr);
alert(maxVal);
//解析XML
parser=新的DOMParser();
xmlDoc=parser.parseFromString(xmlString,“text/xml”);
//从XML获取节点
变量节点=xmlDoc.getElementsByTagName(标记名);
//排列
var-arr=[];
//循环节点并将值推送到arr
对于(var i=0;i

但是,我想返回ItemNo的最大值,其中Name=AAA(valName)。

节点抓取帮助器使其更简单:

function kid(base, tag){
  return (base.getElementsByTagName(tag)[0]||{textContent:""}).textContent.trim();
}


// parse XML
tagName = 'ItemNo';
nameVal = 'AAA';
parser = new DOMParser();
xmlDoc = parser.parseFromString(xmlString,"text/xml"); 

// get nodes from XML
var nodes = xmlDoc.getElementsByTagName(tagName); 

var arr = [];
// loop through nodes and push values to arr
for (var i = 0; i < nodes.length; i++){
    if(kid(nodes[i], "Name") == "AAA") arr.push(kid(nodes[i], "ItemNo"));
}

// get max value from arr
var maxVal = Math.max.apply(null,arr);
alert(maxVal);
function kid(基本、标记){
return(base.getElementsByTagName(标记)[0]|{textContent:“}).textContent.trim();
}
//解析XML
标记名='ItemNo';
nameVal='AAA';
parser=新的DOMParser();
xmlDoc=parser.parseFromString(xmlString,“text/xml”);
//从XML获取节点
变量节点=xmlDoc.getElementsByTagName(标记名);
var-arr=[];
//循环节点并将值推送到arr
对于(var i=0;i
尝试以下方法。您已经需要迭代了,为什么不在那里进行评估呢

// parse XML
parser = new DOMParser();
xmlDoc = parser.parseFromString(xmlString,"text/xml"); 
// get nodes from XML
var nodes = xmlDoc.getElementsByTagName(tagName); 

let maxVal = 0;
let tagName = ['AAA'];
// loop through nodes and if correct tag type, compare and set value
for (let i in nodes){
    if (!tagName.includes(nodes[i].Name)) continue;
    if (parseInt(nodes[i].ItemNo) > maxVal) maxVal = nodes[i].ItemNo;
}
alert(maxVal);

您需要收集Item标记,并基于每个名称标记的值,然后将ItemNo标记(或否)添加到您提供给max()的输出中。是的,这就是我试图实现的,只是不确定如何实现。我需要用这个澄清来更新我的问题。谢谢