Javascript - DomParser - 如何确定非 XML 字符串
Javascript - DomParser - how to determine non XML string
这是我需要做的事情:
- 解析任何给定的字符串,确保它是 XML 格式。
- 如果是XML格式,则计算节点数。并且 return 正确。
- Return 如果字符串不是 XML,则为 false。
我试图使用 DOMParser 来完成这项工作,但是,无论我将什么字符串提供给 DOMParser,它总是将其视为 XML,并计算它有 6 个节点。
这是我的脚本:
function invoke(msg){
try{
var parser = new DOMParser();
var xmlDoc = parser.parseFromString(msg,"text/xml");
var nodes = xmlDoc.getElementsByTagName('*')
console.log('The string is: ' + msg);
console.log('This string has ' + nodes.length + ' nodes.');
return true;
}
catch(err){
console.log('The string is: ' + msg);
console.log('Cannot read this string');
return false;
}
}
invoke("hello world");
invoke("▒0藤▒]Ir▒|̆x▒$۾▒e▒(E▒>Ӆ▒▒▒ܩ▒b▒b▒▒=▒▒\q▒▒▒▒▒1▒▒▒");
invoke("<music><album>Beethoven</album></music>");
下面的屏幕截图是我测试的输出,如果字符串是 XML:
,它似乎正确地计算了总节点数
谁能帮忙。
干杯,
文森特
在 xmlDoc 中检查 parsererror
。
function invoke(msg){
try{
var parser = new DOMParser();
var xmlDoc = parser.parseFromString(msg,"text/xml");
if( xmlDoc.getElementsByTagName('parsererror').length ) {
console.log('The string is: ' + msg);
console.log('Cannot read this string');
return false;
} else {
var nodes = xmlDoc.getElementsByTagName('*');
console.log('The string is: ' + msg);
console.log('This string has ' + nodes.length + ' nodes.');
return true;
}
}
catch(err){
console.log('The string is: ' + msg);
console.log('Cannot read this string');
return false;
}
}
这是我需要做的事情:
- 解析任何给定的字符串,确保它是 XML 格式。
- 如果是XML格式,则计算节点数。并且 return 正确。
- Return 如果字符串不是 XML,则为 false。
我试图使用 DOMParser 来完成这项工作,但是,无论我将什么字符串提供给 DOMParser,它总是将其视为 XML,并计算它有 6 个节点。
这是我的脚本:
function invoke(msg){
try{
var parser = new DOMParser();
var xmlDoc = parser.parseFromString(msg,"text/xml");
var nodes = xmlDoc.getElementsByTagName('*')
console.log('The string is: ' + msg);
console.log('This string has ' + nodes.length + ' nodes.');
return true;
}
catch(err){
console.log('The string is: ' + msg);
console.log('Cannot read this string');
return false;
}
}
invoke("hello world");
invoke("▒0藤▒]Ir▒|̆x▒$۾▒e▒(E▒>Ӆ▒▒▒ܩ▒b▒b▒▒=▒▒\q▒▒▒▒▒1▒▒▒");
invoke("<music><album>Beethoven</album></music>");
下面的屏幕截图是我测试的输出,如果字符串是 XML:
,它似乎正确地计算了总节点数谁能帮忙。
干杯, 文森特
在 xmlDoc 中检查 parsererror
。
function invoke(msg){
try{
var parser = new DOMParser();
var xmlDoc = parser.parseFromString(msg,"text/xml");
if( xmlDoc.getElementsByTagName('parsererror').length ) {
console.log('The string is: ' + msg);
console.log('Cannot read this string');
return false;
} else {
var nodes = xmlDoc.getElementsByTagName('*');
console.log('The string is: ' + msg);
console.log('This string has ' + nodes.length + ' nodes.');
return true;
}
}
catch(err){
console.log('The string is: ' + msg);
console.log('Cannot read this string');
return false;
}
}