使用 jQuery 解析 xml 命名空间。需要帮助!

发布于 2024-10-28 03:04:30 字数 868 浏览 2 评论 0原文

我是ajax新手。我已经通过 jquery 完成了正常的 xml 解析,但无法使用命名空间工作来获取 xml。我在网上搜索过,发现的资源很少。这是 stackoverflow 上的一篇文章,但它对我不起作用。

使用命名空间进行 jQuery XML 解析

这是 xml 文件的一部分。假设我需要 xml 数据中的年份号。我将如何得到它?

<aws:sunset>
                <aws:year number="2011" />
                <aws:month number="3" text="March" abbrv="Mar" />
                <aws:day number="27" text="Sunday" abbrv="Sun" />
                <aws:hour number="7" hour-24="19" />
                <aws:minute number="10" />
                <aws:second number="28" />
                <aws:am-pm abbrv="PM" />
                <aws:time-zone offset="-5" text="Central Daylight Time (USA)" abbrv="CDT" />
    </aws:sunset>

等待您的回复。谢谢!

i am new with ajax. I have done normal xml parsing via jquery but can not get the xml with namespace working. I have searched the web and there is very few resources i found. Here is a post in stackoverflow but it is not working for me.

jQuery XML parsing with namespaces

Here is the part of the xml file. suppose i need the year number from the xml data. How i will get it?

<aws:sunset>
                <aws:year number="2011" />
                <aws:month number="3" text="March" abbrv="Mar" />
                <aws:day number="27" text="Sunday" abbrv="Sun" />
                <aws:hour number="7" hour-24="19" />
                <aws:minute number="10" />
                <aws:second number="28" />
                <aws:am-pm abbrv="PM" />
                <aws:time-zone offset="-5" text="Central Daylight Time (USA)" abbrv="CDT" />
    </aws:sunset>

Waiting for your reply. Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

却一份温柔 2024-11-04 03:04:30

如果可能的话,我建议使用真正的命名空间感知 XML 解析器,尤其是在处理外部服务时。例如,无法保证名称空间前缀会随着时间的推移保持不变。

大多数 JavaScript DOM 解析器都会包含 getElementsByTagNameNS(),它可以让您找到具有实际命名空间的元素。

假设您的数据位于 xml_file 中,该过程可能如下所示。

var namespace = 'http://aws.example.com/';
var parser = new DOMParser(); // Webkit, IE has its own
var xml = parser.parseFromString(xml_file, "text/xml");    
var year = xml.getElementsByTagNameNS(namespace, 'year')[0]; // returns the first aws:year element
var year_value = year.getAttribute('number');

I recommend using a real namespace-aware XML parser if at all possible, especially when dealing with external services. There is no guarantee that the namespace prefix will remain constant over time, for example.

Most JavaScript DOM parsers will include getElementsByTagNameNS(), which will let you find elements with the actual namespace.

The process might look something like this, assuming your data was in xml_file.

var namespace = 'http://aws.example.com/';
var parser = new DOMParser(); // Webkit, IE has its own
var xml = parser.parseFromString(xml_file, "text/xml");    
var year = xml.getElementsByTagNameNS(namespace, 'year')[0]; // returns the first aws:year element
var year_value = year.getAttribute('number');
零度℉ 2024-11-04 03:04:30

当您使用双反斜杠转义冒号

ex 时,您可以解析 DOM。

$("aws\\:year").attr('number')

编辑:

上面的解决方案不适用于 webkit 浏览器。
更好的解决方案

$("[nodeName=aws:year]").attr('number')

没有检查这一点。

You can parse the DOM when you use double backslash to escape the colon

ex.

$("aws\\:year").attr('number')

edit:

the solution above does not work with webkit browsers.
better solution

$("[nodeName=aws:year]").attr('number')

didn't check this out though.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文