gpt4 book ai didi

javascript - 如何在 Javascript 中检查 XML 元素值是否存在

转载 作者:太空宇宙 更新时间:2023-11-04 16:30:34 24 4
gpt4 key购买 nike

我将 XML 存储在变量“ad”和“addd”中。

变量“广告”:

<?xml version="1.0" encoding="UTF-8"?>
<name>
<data>
<Id>003</Id>
</data>
<data>
<Id>006</Id>
</data>
....
</name>

和变量“addd”:

<?xml version="1.0" encoding="UTF-8"?>
<name>
<data>
<Id>009</Id>
</data>
<data>
<Id>005</Id>
</data>
...
</name>

我写了一个ttt功能:

function ttt(ad,addd) {
var match = ad.match(/<Id\/>/);
var matcht = addd.match(/<Id\/>/);
if ((! match || match.length == 0) && (! matcht || matcht.length == 0)){
return "Below is the details of the Id of ad:\n\n" + ad.split("<Id>")[1].split("</Id>")[0]; + "\n\n And, Below is the details of the Id of addd:\n\n" +addd.split("<Id>")[1].split("</Id>")[0];
}

}

我需要If Id 'ad' 变量不为空,则返回警报为 errorId如下:

<?xml version="1.0" encoding="UTF-8"?>
<name>
<data>
<Id>003</Id>
</data>
<data>
<Id>006</Id>
</data>
</name>

而且,我需要If Id 'addd' 变量不为空,则返回警报为 errorId如下:

<?xml version="1.0" encoding="UTF-8"?>
<name>
<data>
<Id>009</Id>
</data>
<data>
<Id>005</Id>
</data>
</name>

最佳答案

这可能有些过头了,但无论如何我喜欢 XSL 方法并且它有效。我发现它也适合教育目的。

您可以创建一个 XSL 样式表并获取您感兴趣的所有值。因此,XSL 将如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/name">
<html>
<body>
<xsl:for-each select="data">
<div><xsl:value-of select="Id" /></div>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

使用XPATH我到达name节点。然后,我循环遍历所有 data 节点并选择其子节点的 Id。值被添加到 div 中。您可以稍后查询,因为您可以看到并获取值。

需要注意三点:您将 XML 存储为字符串变量,因此您需要将其设为NodeDomParser 是你的 friend 。

  var parser = new DOMParser();
var adXmlDoc = parser.parseFromString(ad, "text/xml");
var adddXmlDoc = parser.parseFromString(addd, "text/xml");

此外,您还需要加载 XSL 文件,在示例中我只是通过 XMLHttpRequest 获取它。

var xsl = loadXMLDoc(file);
var xsltProcessor = new XSLTProcessor();
xsltProcessor.importStylesheet(xsl);

我还添加了一个函数来从 XSLT 转换中检索转换后的文档:

function getDocument(xsltProcessor, xmlDoc, name) {
var ownerDocument = document.implementation.createDocument("", name, null);
return xsltProcessor.transformToDocument(xmlDoc, ownerDocument);
}

现在,您可以查询文档,获取您感兴趣的值并实现您的逻辑。在示例中,我将所有 HTML 片段吐出到 DOM 中进行显示。如果节点没有任何值(因此 Id 没有返回任何内容),则会显示错误。

function appendToDocument(selector, doc) {
var container = document.querySelector(selector);
var elements = doc.querySelectorAll("div");
for (var i = 0; i < elements.length; i++) {
if(!elements[i].innerHTML) {
displayError(container);
}
container.innerHTML += elements[i].innerHTML + "</br>";
}
}

随意摆弄并根据示例实现您的逻辑。希望这对您有帮助。

公开访问 plunk

此外,还有一些有关 XML 和 XSLT 转换的资源:

关于javascript - 如何在 Javascript 中检查 XML 元素值是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39859176/

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