在JavaScript中进行XML解析的方法

3,503 阅读4分钟

XML Parsing in JavaScript

XML解析在JavaScript中的定义

XML解析在JavaScript中的定义是:它是一种软件包或库,它为客户端应用程序提供了一个处理XML文档的接口,它在JavaScript中被用来将XML文档转化为可读的形式,如今在许多浏览器中,已经有了内置的XML解析器,它能够检查XML文档的格式并进行验证,我们可以说,XML解析器的主要目的是将XML文档转化为人类可以阅读的代码。

什么是JavaScript中的XML解析?

许多浏览器都有一个内置的XML解析器,可以将XML文档转化为人类可读的格式,我们也可以说,XML解析器是一个软件包,可以与XML文档交互,检查文档的格式,并通过客户端应用程序来验证它,因为操作来自XML文件的数据是相当困难的。XML解析器在客户端应用程序和XML文件之间工作,它的工作是验证通过它的文件,它主要是为XML文件设计的,它有读取XML文件的程序。XML解析与所有的浏览器一起工作,以读取和写入它,它有一个简单的API。因为它有一个DOM解析器和SAX解析器,可以帮助解析文本、解析字符串和解析文件。

很久以前,XML解析器已经被添加到浏览器中,而JavaScript需要为其他语言添加一个新的解析器,以便为其他语言定义数据结构,从而实现数据的序列化。

在JavaScript中,有两个主要的解析器可用:

  • DOM(文档对象模型)解析器

DOM解析器以XML文档对象的形式包含了XML文档的所有信息,它的API非常简单,用于执行读写操作,它由DOM解析器实现,它可以创建像树状结构一样的文档,当我们需要以随机的方式访问文档时,它是有优势的,但它的缺点是比其他解析器慢,它消耗更多的内存,因为完整的文档需要加载到内存中,所以它需要更多内存。

  • SAX(Simple API for XML)解析器

XML的简单API是用来实现API的,它是基于事件的,它不创建任何内部结构。它的客户不知道哪个方法可以调用它,只知道覆盖这个方法并在里面放置自己的代码。这种API的优点是它有一个简单的API,它的内存非常有效,而且它可以处理巨大的文件,速度非常快,但它的缺点是它的API不太直观,因为它是基于事件的,它把数据分成几块,所以客户不知道关于它的全部信息。

实例

在JavaScript中进行XML解析。

例子 #1

<html>
<body>
<p id="demo"></p>
<script>
var text, parser, xmlDoc;
text = "<foodshop><food>" +
"<title>All type of food available</title>" +
"<name>Indian dish</name>" +
"<date>5th september</date>" +
"</food></foodshop>";
parser = new DOMParser();
xmlDoc = parser.parseFromString(text,"text/xml");
document.getElementById("demo").innerHTML =
xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue;
</script>
</body>
</html>

输出

3

在上面的代码中,我们看到了一个将文本解析为XML文档对象的例子,并尝试用JavaScript从中提取信息,我们以一个带有标题的食品店为例,我们采取了文本、解析器和XML文档,通过使用该方法,我们必须通过XML文档对象来解析我们的文本,并在上面给出输出。

例子#2

<!DOCTYPE html>
<html>
<body>
<h1>Important message</h1>
<div>
<b>To:</b> <span id="to"></span><br>
<b>from:</b> <span id="from"></span><br>
<b>Message:</b> <span id="message"></span>
</div>
<script>
txt1="<note>";
txt2="<to>My Mother</to>";
txt3="<from>Selena</from>";
txt4="<body>Do not forget to meet on this weekend!</body>";
txt5="</note>";
txt=txt1+txt2+txt3+txt4+txt5;
if (window.DOMParser)
{
parser=new DOMParser();
xmlDoc=parser.parseFromString(txt,"text/xml");
}
else // Internet Explorer
{
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async=false;
xmlDoc.loadXML(txt);
}
document.getElementById("to").innerHTML=
xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue;
document.getElementById("from").innerHTML=
xmlDoc.getElementsByTagName("from")[0].childNodes[0].nodeValue;
document.getElementById("message").innerHTML=
xmlDoc.getElementsByTagName("body")[0].childNodes[0].nodeValue;
</script>
</body>
</html>

输出

XML Parsing in JavaScript 1

在这个例子中,我们通过使用DOM解析器来提取XML字符串,通过使用文本来打印信息,它创建了一个树状结构,所以我们写的文本或字符串将显示在输出中,在这个例子中,我们试图为母亲显示信息,所以我们调用了解析器方法,输出结果如上所示。

将一个字符串解析为XML(编码)

在这一节中,我们将看到如何通过使用JavaScript来解析一个XML字符串,在这个例子中,我们将采取一个包含XML的字符串,并尝试将其解析为一个XML文档的对象,这样该对象将允许阅读和操作它。

让我们看看JavaScript的一个例子。

var xmlString = '<reminder><date>2021-10-05, 10:00:00</date><heading>Interview</heading><body>Interview is on XML-Parser in JavaScript</body></reminder>';
var domParser = new DOMParser();
var xmlDocument = domParser.parseFromString(xmlString,"text/xml");
console.log(xmlDocument);

输出

XML Parsing in JavaScript

在上面的代码中,我们创建了一个基本的XML文件,在这个例子中,我们用XML来构成一个提醒,我们创建了一个DOMParser实例,通过使用这个方法,我们试图将XML字符串解析成一个XML文档的对象,同时我们通过将另一个参数mimeType改为text/XML,所以我们通过新的XML文档实例到浏览器控制台。

总结

在这篇文章中,我们看到了JavaScript中的XML解析器的类型和特点的介绍,解析文本和字符串的解释,还描述了如何将字符串解析为XML文档对象的语法,这篇文章将有助于理解JavaScript中XML解析器的概念。