gpt4 book ai didi

Javascript XML DOM 技巧

转载 作者:行者123 更新时间:2023-11-30 10:49:54 24 4
gpt4 key购买 nike

全部!我在使用 Javascript 访问 XML 节点的属性时遇到了一些问题。

XML 节点具体如下所示:

<List DocTemplateUrl="" DefaultViewUrl="/Lists/Announcements/AllItems.aspx" MobileDefaultViewUrl="" ID="{blahblahblahblah}" ... />

节点本身没有包含在其标签中的“数据”;它保存的所有数据都是 List 标签的实际修饰符。

Javascript 的 XML DOM 引用提供了很少关于如何访问节点标签修饰符的信息; DOM 引用中的所有方法和属性都涉及子节点以及如何访问节点的内容。当然,这是有道理的,因为 XML 应该是格式良好且漂亮的,但是那些知道 XML 片段来自何处的人已经在笑了,因为这种非常不直观的 XML 是直接从 Microsoft SharePoint 的 Web 服务 API 输出的。 :)

无论如何,这不是重点。如果有人知道如何使用 Javascript 的 XML DOM 访问 XML 节点的属性,我将不胜感激。 :D

编辑:问题可能出在不同的地方。我的意思是属性,而不是属性;这帮助了很多人。但是,它仍然告诉我所有 XML DOM 节点属性和方法都未定义;我认为我用来访问这些方法的实际引用是未定义的。这是我用来生成它的代码:

var xmlDoc = $.parseXML(xml);
$(xmlDoc).find('List').each (
function ()
{
var id = $(this).attributes.getNamedItem("ID").value;
alert(id);
});

其中“xml”包含上面的列表片段,是 SharePoint Web 服务的直接 XML 输出。

我假设这段代码找到了所有类型为“List”的节点并遍历它们;这是不正确的吗?

编辑:找到解决方案。显然,当您使用 JQuery 封装一个 Javascript XML DOM 节点时,$(this) 不会给您 DOM 元素,而是给您一个包含 DOM 元素的 JQuery 对象。考虑到我上面使用的代码,有两种解决方法:

  1. var id = $(this).attr('ID');//这是 JQuery 让您访问封装的 XML 节点内的属性的方法 - attr() 不是标准 Javascript XML DOM 的一部分,因为 $(this) 不是 XML DOM 元素。

  2. var id = $(this).get(0).attributes.getNamedItem("ID").value;//这是 Javascript 的方式。在这里,我们调用get(0) 从JQuery 封装的对象中返回实际的XML DOM 节点;之后,我们可以调用我们想要的任何 Javascript XML DOM 方法。我使用这种方法是因为我了解 Javascript XML DOM,而且我更愿意在 GUI 生成之外尽可能少地使用 JQuery。

希望能帮助遇到类似问题的其他人。 :)

(哦,属性与特性。很高兴知道。:D)

最佳答案

您所指的值称为属性

假设您有对适当元素的引用:

var mobileDefaultViewUrl = element.getAttribute('MobileDefaultViewUrl');

基于 Mozilla 的浏览器的更完整示例:

var xmlText = "<root><element id='elementId' attribute1='test1' attribute2='test2' /></root>";

var parser=new DOMParser();
var dom=parser.parseFromString(xmlText,"text/xml");
var element = dom.getElementsByTagName('element')[0];

console.log(element.getAttribute('attribute1'));

在 jQuery 中:

var xml = "<root><element id='elementId' attribute1='test1' attribute2='test2' /></root>",
xmlDoc = $.parseXML( xml ),
$xml = $( xmlDoc ),
$element = $xml.find( "element" );

console.log($element.attr('attribute1'));

关于Javascript XML DOM 技巧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6116255/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com