gpt4 book ai didi

javascript - 如何根据属性获取XML父标签的子节点

转载 作者:行者123 更新时间:2023-11-28 06:18:13 26 4
gpt4 key购买 nike

我一直在尝试使用JS根据属性类型显示父节点的所有子节点

要求:

用户给出三个 I/P 为:

1)“拉姆”“学生”“a1”

O/P:应根据所选名称和类型显示所有子元素

啊啊啊啊啊啊啊啊啊啊啊

2)“Ram”“学生”“a2”:

xxxx,tttttt,yyyy

XML:

<?xml version="1.0" ?>
<root>
<program name="Ram">
<computation type="student">
<module type="a1">
<modPath>aaa</modPath>
<modInputTemplate>aaaaaaaa</modInputTemplate>
<modSchematic>aaaa</modSchematic>
</module>
<module type="a2">
<modPath>xxxx</modPath>
<modInputTemplate>tttttt</modInputTemplate>
<modSchematic>yyyy</modSchematic>
</module>
</computation>
<computation type="Employee">
<module type="b1">
<modPath>lllll</modPath>
<modInputTemplate>llllll</modInputTemplate>
<modSchematic>lllll</modSchematic>
</module>
<module type="b2">
<modPath>mmmmmmmmm</modPath>
<modInputTemplate>mmmmmmmm</modInputTemplate>
<modSchematic>mmmmmm</modSchematic>
</module>
</computation>
</program>
<program name="Rahul">
.......
.......
.......
</program>
<program name="Ramesh">
.......
.......
.......
</program>
</root>

我有JS来显示子节点,但它不是基于属性值

    <html>
<head>
<title>Read XML in Microsoft Browsers</title>
<script type="text/javascript">
var xmlDoc;
function loadxml()
{
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = false;
xmlDoc.onreadystatechange = readXML;
xmlDoc.load("writers.xml");
}


function readXML()
{
if(xmlDoc.readyState == 4){
myFunction(xmlDoc);
}
function myFunction(xml) {
var x, i, txt;
txt = "";

var x = xmlDoc.getElementsByTagName("module");//Here "module" should be replaced by attribute value which user gives as i/p

for( i = 0; i < x[0].childNodes.length; i++) {
txt += x[0].childNodes[i].nodeName + ": " + x[0].childNodes[i].childNodes[0].nodeValue + "<br>";
}
document.getElementById("demo").innerHTML = txt;
}
}
</script>
</head>

<body onload="loadxml()">
<p id="demo">Write output of loadxml()</p>
<p id="test">Test me!</p>
</body>

</html>

最佳答案

您所要做的就是检查所需的属性。

您的代码返回一组模块:

var x = xmlDoc.getElementsByTagName("module");

您要做的最后一件事是遍历节点并仅选择具有所需属性的节点:

// x is the array of modules, i stands for the array iteration    
x[i].getAttribute(name);

现在您可以将所需的输入与搜索算法结合起来。由于你有了带有子节点的子节点,它可能会变得有点慢。你总会经历:

Parent -> Child.getAttribute -> new array -> Child.getAttribute.

您要做的最后一件事是使用普通的 if 语句检查输入,这取决于您的输入有多复杂。

如果有任何不清楚的地方,请随时询问。

问候,美加金

关于javascript - 如何根据属性获取XML父标签的子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35773138/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com