如何使用jQuery在变量中查找无效的未闭合XML标记
How to find invalid unclosed XML tags in a variable using jQuery?
我想在变量或文本框中找到未闭合的XML标记。
var xml = "<name>supun</name><age>23<year>1111</year>";
所以年龄没有结束标签,我想找到标签
您可以使用以下函数处理无效xml,如下所示
var xt="",h3OK=1
function checkErrorXML(x)
{
xt=""
h3OK=1
checkXML(x)
}
function checkXML(n)
{
var l,i,nam
nam=n.nodeName
if (nam=="h3")
{
if (h3OK==0)
{
return;
}
h3OK=0
}
if (nam=="#text")
{
xt=xt + n.nodeValue + "'n"
}
l=n.childNodes.length
for (i=0;i<l;i++)
{
checkXML(n.childNodes[i])
}
}
function validateXML(xml)
{
// code for IE
if (window.ActiveXObject)
{
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async=false;
xmlDoc.loadXML(xml);
if(xmlDoc.parseError.errorCode!=0)
{
txt="Error Code: " + xmlDoc.parseError.errorCode + "'n";
txt=txt+"Error Reason: " + xmlDoc.parseError.reason;
txt=txt+"Error Line: " + xmlDoc.parseError.line;
alert(txt);
}
else
{
alert("No errors found");
}
}
// code for Mozilla, Firefox, Opera, etc.
else if (document.implementation && document.implementation.createDocument)
{
var parser=new DOMParser();
var text=xml;
var xmlDoc=parser.parseFromString(text,"text/xml");
if (xmlDoc.getElementsByTagName("parsererror").length>0)
{
checkErrorXML(xmlDoc.getElementsByTagName("parsererror")[0]);
alert(xt)
}
else
{
alert("No errors found");
}
}
else
{
alert('Your browser cannot handle this script');
}
}
var xml="<xml><name>supun</name><age>23<year>1111</year></xml>";
validateXML(xml);
来源:http://www.w3schools.com/dom/dom_errors.asp
我建议一个小的regexp破解:
var str = "<name>supun</name><age>23<year>1111</year>";
function getInvalidTags(str)
{
// remove text between XML tags:
var noText = str.replace(/>[^<>]*</g, "><");
var prev = noText;
var next = "";
// while something changed remove <any></any> pairs
while (prev != (next = prev.replace(/<([^<>]*)( [^<>]*)?><'/'1>/g, "")))
prev = next;
return prev;
}
console.log(getInvalidTags(str));
请注意,它不支持属性,但可以很容易地进行扩展以支持它们。
更新:已更新以支持属性。
相关文章:
- 加载XML并获取标记.从php更改为javascript
- 使用PHP/MMySQL在谷歌地图上形成标记的XML文件
- 基于某个标记 ID 从 XML 中搜索值
- EXTJS 4.2在XML阅读器的XML标记中转义冒号(:)
- 使用替换函数替换 XML 标记不起作用
- 从谷歌地图xml中删除标记
- 从外部xml文件创建标记
- 为什么使用自定义标记创建元素会在 IE9 或 10 的 outerHTML 中添加 xml 命名空间,直到调用 .fin
- 解析 XML 到 js 数据,如何访问特定标记
- 当数据库值为 NULL 时,如何在 XML 标记之间插入空格
- 在 javascript 中获取 xml 标记名称
- 如何使用 XML 合金标记在钛金中的列表视图上设置事件
- 根据项目标记删除 xml 中的行
- 如何使用 JS AJAX 获取 XML 标记的名称
- 为xml谷歌地图生成的每个标记创建复选框
- jQuery - 在XML树中获取某些标记
- 未捕获的语法错误:无法在“元素”上设置“innerHTML”属性:提供的标记是无效的 XML
- 使用 JavaScript 正则表达式将 XML 标记转换为大写
- 在 XML 文件中查找标记
- 如何在node.js中列出所有标记XML