[英]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);
我建議一個小的正則表達式黑客:
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));
請注意,它不支持屬性,但可以輕松擴展以支持它們。
更新 :已更新以支持屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.