使用 JavaScript 解析 XML [重复]

2023-12-01

我需要能够使用 JavaScript 解析 XML。 XML 将位于变量中。我不想使用 jQuery 或其他框架。

我看过这个,XML > jQuery 读取.


我从你的猜测最后一个问题在此之前 20 分钟询问,您正在尝试解析(读取和转换)通过使用 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;

JSFiddle


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);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 JavaScript 解析 XML [重复] 的相关文章

随机推荐

  • 如何防止 XmlSerialzer 转义“嵌套 XML”?

    我正在使用 XmlSerializer 来序列化 反序列化复杂对象 一个属性包含一个 XML 字符串 应将其写入字符串属性而不进行反序列化 示例 可在 LinqPad 中执行 XmlRoot RootObject Serializable
  • 从日期时间获取日期名称

    如何从 Python 中的日期时间对象获取日期名称 例如星期一 星期二 星期三 星期四 星期五 星期六和星期日 所以 举例来说 datetime 2019 9 6 11 33 0 应该给我 Friday import datetime no
  • 覆盖单个文件的编译标志

    我想使用一组全局标志来编译项目 这意味着我在顶级 CMakeLists txt 文件中指定了 ADD DEFINITIONS Wall Weffc pedantic std c 0x 但是 对于子目录中的特定文件 假设为 foo cpp 我
  • 用于重复数据删除的 Kafka 压缩

    我试图了解 Kafka 压缩的工作原理 并有以下问题 kafka 是否保证启用压缩的主题中存储的消息的键的唯一性 Thanks 简短的回答是否定的 Kafka 不保证启用主题保留时存储的密钥的唯一性 在 Kafka 中有两种类型cleanu
  • 如何在android中的fragment中添加选项卡?

    我尝试在片段内添加选项卡 我可以添加 但特定选项卡的内容与选项卡重叠 MainFragmentActivity java public class MainActivity extends FragmentActivity Override
  • 这是什么网页效果

    当你在堆栈溢出时达到 1000 声望时 你将获得一张消耗性用户卡 当您将鼠标悬停在卡片上时 我怎样才能重现这种效果 怎么称呼 我的猜测是它是一个 Jquery 方法 但如果是的话 有人可以指出我正确的方向 因为我寻找它但无法准确得到我需要的
  • 从 Android 中的 url 加载图像,仅当图像很小时

    我在用着BitmapFactory decodeStream从 Android 中的 url 加载图像 我只想下载低于特定尺寸的图像 我目前正在使用getContentLength检查这个 然而 我被告知getContentLength并不
  • java.lang.IllegalArgumentException:未知实体

    我有一个试驾 package com chinalbs service RunWith SpringJUnit4ClassRunner class ContextConfiguration locations classpath appli
  • 简单页面应用程序路由到相同视图或控制器 SailsJS

    如何将多个 url 路由到同一控制器或视图以使用 Angular 单页应用程序 我可以做到这一点 但我觉得很丑 view homepage login view homepage register view homepage troller
  • PHP - 使用简单 XML 复制 XML 节点

    我需要使用简单 XML 加载 XML 源 复制现有节点及其所有子节点 然后在渲染 XML 之前自定义此新节点的属性 有什么建议吗 SimpleXML 不能做到这一点 所以你必须使用DOM 好消息是 DOM 和 SimpleXML 是同一枚硬
  • 如何在mongodb中删除具有特定条件的重复项?

    例如 我的收藏中有以下文档 id GuqXmAkkARqhBDqhy beatmapset id 342537 version MX diff approach 5 artist Yousei Teikoku title Kokou no
  • 如何在 C# 中使用“for”循环创建动态递增变量

    如何在 C 中使用 for 循环创建动态递增变量 像这样 track 1 track 2 track 3 track 4 so on 您无法创建动态命名的变量 您所能做的就是创建一些集合或数组 并对其进行操作 我认为最适合你的课程是通用课程
  • Magento 2 重定向到支付网关错误

    我已经使用转换器转换了我的 Magento 1 支付模块 我想我需要修改代码以适应 Magento 2 我被困在结账过程中 重定向到支付网关 以下是当 magento 尝试重定向到时我的错误http localhost 8083 mm pd
  • Alfresco 社区版和 Alfresco 企业版有什么区别?

    Alfresco 社区版和 Alfresco 企业版有什么区别 它提供的两种功能有什么区别吗 我们可以下载具有更长试用许可证的企业版吗 企业版是商业支持的版本 除了支持之外 您还可以获得补丁 更新 赔偿以及与认证合作伙伴的联系 从功能的角度
  • 如何在Python中获取__main__模块的文件名?

    假设我有两个模块 a py import b print name file b py print name file 我运行 a py 文件 这打印 b C path to code b py main C path to code a
  • 如何使 WinHttpCrackUrl 在 64 位下工作

    我有 Visual Basic for Applications 代码 使用WinHttp并可与在 32 位 Windows XP 上运行的 32 位 Office 2010 完美配合 即使可以正常编译 相同的代码也无法在 64 位 Win
  • 如何通过 ssh 使用参数执行远程命令?

    In my bashrc我定义了一个稍后可以在命令行上使用的函数 function mycommand ssh email protected cd testdir test sh 1 使用该命令时 只需cd命令在远程主机上执行 这test
  • Python,函数改变值

    所以我在让这个系统正常工作时遇到了麻烦 我不确定我是否提出了正确的问题 但这就是正在发生的事情以及我想要发生的事情 money 1 def Stats print print money str money def gainM money
  • 如何在Jmeter中根据另一个值提取json值

    在 Jmeter 中 我试图从 json 中提取值 这是我收到的 json 响应 Definition key 1124 Id 1743 srcID 3427 pcKey 1 userName abraizada cName JMeter2
  • 使用 JavaScript 解析 XML [重复]

    这个问题在这里已经有答案了 我需要能够使用 JavaScript 解析 XML XML 将位于变量中 我不想使用 jQuery 或其他框架 我看过这个 XML gt jQuery 读取 我从你的猜测最后一个问题在此之前 20 分钟询问 您正