Javascript 枚举另一个标记中的顶级标记

Javascript 枚举另一个标记中的顶级标记,javascript,html,xml-parsing,Javascript,Html,Xml Parsing,我打赌这是基本的,但我不知道怎么做 我有一个xml,它有模型列表标记,其中包括许多模型标记,也包括模型标记: <ModelList> <Model name="Name"> <Model name="SubName" id="ID"></Model> ... </Model> <Model name="

我打赌这是基本的,但我不知道怎么做

我有一个xml,它有
模型列表
标记,其中包括许多
模型
标记,也包括模型标记:

<ModelList>
    <Model name="Name">
         <Model name="SubName" id="ID"></Model>
         ...
    </Model>
    <Model name="Name2">
         <Model name="SubName2" id="ID2"></Model>
         ...
    </Model>
</ModelList>
因此,我认为,接下来我需要检查所有顶级
模型
,并将它们的
名称
属性与我的标记字符串进行比较。如果它们相等,则对内部
Model
标记执行相同的操作,搜索Model

我想应该是这样的

for(var i=0;i<element.length;i++)
   if(element[i].Name==MarkString)
     for(var j=0;j<element[i].length;j++)
   if(element[i][j].Name==ModelString)
        return element[i][j].id;

for(var i=0;i要获取某个节点的顶级child数组,应使用
childNodes
属性:

domElement.childNodes
这是一个支持
length
属性的对象

另外,对于我的案例,不需要使用
getElementsByTagName
方法。因此对于我的案例,解决方案是:

var parser = new DOMParser();
var xmlDoc = parser.parseFromString(xmlString, "text/xml");

for(var i=0; i<xmlDoc.childNodes.length; i++)
  if(xmlDoc.childNodes[i].getAttribute('Name') == MarkString)
for(var j=0; j<xmlDoc.childNodes[i].childNodes.length; j++)
  if(xmlDoc.childNodes[i].childNodes[j].getAttribute('Name') == ModelString)
    return element[i][j].id;
var parser=new DOMParser();
var xmlDoc=parser.parseFromString(xmlString,“text/xml”);

对于(var i=0;我可以编辑您的问题,首先显示
MarkString
ModelString
的内容,然后给出示例xml,您的预期输出是什么?
var parser = new DOMParser();
var xmlDoc = parser.parseFromString(xmlString, "text/xml");

for(var i=0; i<xmlDoc.childNodes.length; i++)
  if(xmlDoc.childNodes[i].getAttribute('Name') == MarkString)
for(var j=0; j<xmlDoc.childNodes[i].childNodes.length; j++)
  if(xmlDoc.childNodes[i].childNodes[j].getAttribute('Name') == ModelString)
    return element[i][j].id;