Fer*_*ndo 2 javascript xml domparser
我有以下代码,我正在尝试获取c:CreationDate节点:
value = '<?xml version="1.0" encoding="UTF-8"?><content><c:CreationDate>2010-09-04T05:04:53Z</c:CreationDate></content>';
xml = (new DOMParser()).parseFromString(value, 'text/xml');
console.log(xml.getElementsByTagName('c:CreationDate'));
Run Code Online (Sandbox Code Playgroud)
不幸的是,它返回一个空数组,而不是一个包含xml中节点的数组.我认为这是因为":"符号引起的.
有办法逃脱吗?
注意:请不要建议使用childNodes或类似的东西.这对我来说不起作用,因为我的xml是验证复杂的(这里只是一个示例),并且将来很可能会改变,我只能依赖于标签名称.
谢谢!
van*_*nje 11
该c中c:CreationDate表示XML命名空间前缀.名称空间前缀只是名称空间的快捷方式.必须使用xmlns:c属性在文档中的某处定义名称空间.但是在您的文档中缺少名称空间定义.
所以看起来应该是这样的:
var value = '<?xml version="1.0" encoding="UTF-8"?>' +
'<content>' +
' <c:CreationDate xmlns:c="http://my.namespace">2010-09-04T05:04:53Z</c:CreationDate>' +
'</content>';
Run Code Online (Sandbox Code Playgroud)
要么
var value = '<?xml version="1.0" encoding="UTF-8"?>' +
'<content xmlns:c="http://my.namespace">' +
' <c:CreationDate>2010-09-04T05:04:53Z</c:CreationDate>' +
'</content>';
Run Code Online (Sandbox Code Playgroud)
在此示例中,前缀c被分配给命名空间http://my.namespace.该CreationDate标签前缀c,因此它属于命名空间http://my.namespace.
然后,您可以使用名称空间感知getElementsByTagNameNS()功能来查询CreationDate元素:
console.log(xml.getElementsByTagNameNS('http://my.namespace', 'CreationDate'));
Run Code Online (Sandbox Code Playgroud)
作为第一个参数,您必须传递真实的命名空间名称而不是前缀.
| 归档时间: |
|
| 查看次数: |
3566 次 |
| 最近记录: |