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