当前位置: 首页 > 面试题库 >

使用JavaScript解析XML

穆文斌
2023-03-14
问题内容

我需要能够使用JavaScript解析XML。XML将在变量中。我宁愿不使用jQuery或其他框架。

我已经看过了,XML> jQuery阅读。


问题答案:

从这个问题的20分钟前的最后一个问题中longitude-to-address),我猜测您正在尝试解析(读取和转换)通过使用GeoNames的FindNearestAddress找到的XML。

如果您的XML在名为的字符串变量中,txt并且看起来像这样:

<address>
  <street>Roble Ave</street>
  <mtfcc>S1400</mtfcc>
  <streetNumber>649</streetNumber>
  <lat>37.45127</lat>
  <lng>-122.18032</lng>
  <distance>0.04</distance>
  <postalcode>94025</postalcode>
  <placename>Menlo Park</placename>
  <adminCode2>081</adminCode2>
  <adminName2>San Mateo</adminName2>
  <adminCode1>CA</adminCode1>
  <adminName1>California</adminName1>
  <countryCode>US</countryCode>
</address>

然后,您可以像这样用Javascript DOM解析XML:

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);
}

并从这样的节点获取特定的值:

//Gets house address number
xmlDoc.getElementsByTagName("streetNumber")[0].childNodes[0].nodeValue;

//Gets Street name
xmlDoc.getElementsByTagName("street")[0].childNodes[0].nodeValue;

//Gets Postal Code
xmlDoc.getElementsByTagName("postalcode")[0].childNodes[0].nodeValue;

2019年2月编辑:

为了回应@gaugeinvariante对带命名空间前缀的xml的担忧。如果您需要使用命名空间前缀来解析xml,则所有内容应该几乎相同:

注意:这仅在支持xml名称空间前缀的浏览器(例如Microsoft Edge)中有效

// XML with namespace prefixes 's', 'sn', and 'p' in a variable called txt

txt = `

<address xmlns:p='example.com/postal' xmlns:s='example.com/street' xmlns:sn='example.com/streetNum'>

  <s:street>Roble Ave</s:street>

  <sn:streetNumber>649</sn:streetNumber>

  <p:postalcode>94025</p:postalcode>

</address>`;



//Everything else the same

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);

}



//The prefix should not be included when you request the xml namespace

//Gets "streetNumber" (note there is no prefix of "sn"

console.log(xmlDoc.getElementsByTagName("streetNumber")[0].childNodes[0].nodeValue);



//Gets Street name

console.log(xmlDoc.getElementsByTagName("street")[0].childNodes[0].nodeValue);



//Gets Postal Code

console.log(xmlDoc.getElementsByTagName("postalcode")[0].childNodes[0].nodeValue);


 类似资料:
  • 问题内容: 在页面中,我想选择一个变量的值。以下是页面的摘要。 我的目的是使用来从此页面读取变量的值。有可能吗?如果是,那怎么办? 问题答案: 由于jsoup不是javascript库,因此有两种方法可以解决此问题: A.使用JavaScript库 优点: 全面的Javascript支持 缺点: 附加的天秤/依赖项 B.使用Jsoup +手动解析 优点: 无需额外的库 足以完成简单的任务 缺点:

  • 问题内容: 我需要解析RSS feed(XML版本2.0)并在HTML页面中显示已解析的详细信息。 问题答案: 解析提要 使用jQuery的jFeed (不建议这样做,请参阅其他选项。) 借助jQuery的内置XML支持 使用jQuery和[Google AJAX Feed API](https://developers.google.com/feed/) 但这意味着您依赖它们在线和可访问。 建筑

  • 我正在使用以下命令解析包含HTML标记和javascript标记的HTML字符串 问题在于 Javascript 元素只包含在一行中。 另外,我已经尝试过 这适用于Javascript…但是超文本标记语言元素已经包含在没有结束标记的元素中。例如: 已被解析为 当我运行我的应用程序时,它不起作用。 我该如何解决这个问题?有没有办法使用JSOUP一起解析HTML和脚本? 注意:我刚刚在 JSOUP g

  • 主要内容:什么是 JSON,在 JavaScript 中解析 JSON 数据,解析嵌套的 JSON 数据,将数据转换为 JSONJSON 全称为“JavaScript Object Notation”,是当前最流行的一种轻量级的数据交换格式,用来存储和传输数据,通常服务器端与客户端在进行交互时就是使用 JSON 格式的数据。 什么是 JSON JSON 是从 JavaScript 脚本中演变而来的,并且使用 JavaScript 中的语法来描述数据。与 XML 一样,JSON 也是一种基于文本的

  • 本文向大家介绍JavaScript 作用域链解析,包括了JavaScript 作用域链解析的使用技巧和注意事项,需要的朋友参考一下 JavaScript中有Scope(作用域),Scope chain(作用域链),Execute context(执行上下文),Active Object (活动对象),Dynamic Scope(动态作用域),Closure(闭包)这些概念,要理解这些概念,我们从静

  • 我正在使用Coingecko API。但我就是无法解析数据。下面是示例数据。解析我要做的每个块。 https://api.coingecko.com/api/v3/exchanges 我使用的示例代码: null null