javascript基础从小白到高手系列六百零七:DOMParser 类型

Firefox 专门为把XML 解析为DOM文档新增了DOMParser 类型,后来所有其他浏览器也实现了该
类型。要使用DOMParser,需要先创建它的一个实例,然后再调用parseFromString()方法。这个方
法接收两个参数:要解析的XML 字符串和内容类型(始终应该是"text/html")。返回值是Document
的实例。来看下面的例子:
let parser = new DOMParser();
let xmldom = parser.parseFromString(“”, “text/xml”);
console.log(xmldom.documentElement.tagName); // “root”
console.log(xmldom.documentElement.firstChild.tagName); // “child”
let anotherChild = xmldom.createElement(“child”);
xmldom.documentElement.appendChild(anotherChild);
let children = xmldom.getElementsByTagName(“child”);
console.log(children.length); // 2
这个例子把简单的XML 字符串解析为DOM文档。得到的DOM 结构中是document 元素,
它有个子元素。然后就可以使用DOM 方法与返回的文档进行交互。
DOMParser 只能解析格式良好的XML,因此不能把HTML 解析为HTML文档。在发生解析错误时,
不同浏览器的行为也不一样。Firefox、Opera、Safari 和Chrome 在发生解析错误时,parseFromString()
方法仍会返回一个Document 对象,只不过其document 元素是,该元素的内容为解
析错误的描述。下面是一个解析错误的示例:
XML
Parsing Error: no element found Location: file:// /I:/My%20Writing/My%20Books/
Professional%20JavaScript/Second%20Edition/Examples/Ch15/DOMParserExample2.js Line
Number 1, Column 7:<root> ------^
Firefox 和Opera 都会返回这种格式的文档。Safari 和Chrome 返回的文档会把元素
嵌入在发生解析错误的位置。早期IE 版本会在调用parseFromString()的地方抛出解析错误。由于
这些差异,最好使用try/catch 来判断是否发生了解析错误,如果没有错误,则通过getElements-
ByTagName()方法查找文档中是否包含元素,如下所示:
let parser = new DOMParser(),
xmldom,
errors;
try {
xmldom = parser.parseFromString(“”, “text/xml”);
errors = xmldom.getElementsByTagName(“parsererror”);
if (errors.length > 0) {
throw new Error(“Parsing error!”);
}
} catch (ex) {
console.log(“Parsing error!”);
}
这个例子中解析的XML 字符串少一个标签,因此会导致解析错误。IE 此时会抛出错误。
Firefox 和Opera 此时会返回document 元素为的文档,而在Chrome 和Safari 返回的文
档中,是的第一个子元素。调用getElementsByTagName(“parsererror”)
可适用于后两种情况。如果该方法返回了任何元素,就说明有错误,会弹警告框给出提示。当然,此时
可以进一步解析出错误信息并显示出来。
XMLSerializer 类型
与DOMParser 相对,Firefox 也增加了XMLSerializer 类型用于提供相反的功能:把DOM文档
序列化为XML 字符串。此后,XMLSerializer 也得到了所有主流浏览器的支持。
要序列化DOM文档,必须创建XMLSerializer 的新实例,然后把文档传给serializeToString()
方法,如下所示:
let serializer = new XMLSerializer();
let xml = serializer.serializeToString(xmldom);
console.log(xml);
serializeToString()方法返回的值是打印效果不好的字符串,因此肉眼看起来有点困难。
XMLSerializer 能够序列化任何有效的DOM对象,包括个别节点和HTML 文档。在把HTML 文
档传给serializeToString()时,这个文档会被当成XML 文档,因此得到的结果是格式良好的。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值