如何在Javascript中检查XML元素值是否存在
How to check existance of the XML element value in Javascript
我将XML存储在变量'ad'和'add '中。
变量"广告":
<?xml version="1.0" encoding="UTF-8"?>
<name>
<data>
<Id>003</Id>
</data>
<data>
<Id>006</Id>
</data>
....
</name>
和变量'add ':
<?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'变量,然后返回警报作为error
与Id
如下:
<?xml version="1.0" encoding="UTF-8"?>
<name>
<data>
<Id>003</Id>
</data>
<data>
<Id>006</Id>
</data>
</name>
而且,我需要If
Id
不是空白从'add '变量然后返回警报作为error
与Id
如下:
<?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存储为字符串变量,因此需要将其设置为Node
。DomParser
是你的朋友。
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);
}
现在,您可以通过文档进行查询,获取您感兴趣的值并实现您的逻辑。在这个例子中,我在DOM中显示所有的HTML片段。如果node没有任何值(因此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转换的资源:
- http://www.w3schools.com/xsl/xsl_client.asp
- https://developer.mozilla.org/en-US/docs/Web/XSLT/Using_the_Mozilla_JavaScript_interface_to_XSL_Transformations
- https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor
- 创建XML
- XML解析错误-文档末尾的额外内容
相关文章:
- javascript数组元素是否知道其封闭数组
- 如何检查元素是否在iframe中
- 检查元素是否将状态从隐藏更改为可见
- 确定元素是否存在
- 消隐数组元素是否生成自己的属性
- 检查一个元素是否有一个类与另一个类总是返回true
- 如何检查日期选择器和时间选择器元素是否使用JQuery/Javascript设置
- 如何查找具有该ID的元素是否存在
- 检查元素是否已单击或hasClass
- 使用webdriver和selenium验证元素是否不存在
- 如何使用jQuery实时检查元素是否为空
- html元素是否具有内置的属性
- 检查元素是否有内容
- 使用 javascript 检查元素是否包含子标记而不是文本
- JavaScript 在 JSON 对象中移动如何判断元素是否存在
- 检查两个或多个 DOM 元素是否重叠
- 谷歌地球插件 — 如何检查带有 ID 的元素是否已经存在
- 检查元素是否悬停在上面
- DOM 元素是否可以具有其值为任意对象(而不是字符串)的属性
- 如何检查DOM元素是否已完全加载