关于Namespace的selectNodes("//x:aa/x:bb"),如果前缀x换了,那怎么办?

Lostinet 2002-04-28 12:20:49
条件是:已经知道x的namespace
...全文
59 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
saucer 2002-04-28
  • 打赏
  • 举报
回复
xmldoc.setProperty("SelectionNamespaces",
"xmlns:x='http://myserver.com'");
saucer 2002-04-28
  • 打赏
  • 举报
回复
对不起,应该是

alert(nodes[i].prefix + "-" + nodes[i].baseName +"-" + nodes[i].namespaceURI);
saucer 2002-04-28
  • 打赏
  • 举报
回复
只要这里的两个x不是属于不同的命名空间就成,而且XMLDOM不太看前缀,譬如

<root xmlns:x='http://myserver2.com'>
<x:a>
<x:b xmlns:x='http://myserver.com'>
</x:b>
</x:a>
</root>

var xmldoc = new ActiveXObject("MSXML2.DOMDOCUMENT.4.0");
xmldoc.async = false;
xmldoc.load("some.xml");
xmldoc.setProperty("SelectionNamespaces",
"xmlns:x2='http://myserver2.com' xmlns:x='http://myserver.com'");
var nodes = xmldoc.selectNodes("//x2:a[x:b]");
for (var i=0; i < nodes.length; i++)
alert(nodes[0].prefix + "-" + nodes[i].baseName +"-" + nodes[i].namespaceURI);

显示:
x-a-http://myserver2.com
Lostinet 2002-04-28
  • 打赏
  • 举报
回复
那么如果已经有其他的了x了呢?会冲突么?
saucer 2002-04-28
  • 打赏
  • 举报
回复
var xmldoc = new ActiveXObject("MSXML2.DOMDOCUMENT.4.0");
xmldoc.async = false;
xmldoc.load("some.xml");
xmldoc.setProperty("SelectionNamespaces",
"xmlns:x='http://myserver.com'");
var nodes = xmldoc.selectNodes("//x:aa/x:bb");

nodes[0].prefix;
nodes[0].baseName;
nodes[0].namespaceURI;
Lostinet 2002-04-28
  • 打赏
  • 举报
回复
可以说详细点么?
--------------------
如果在dom中,我知道了根节点的某个namespace,那么我可以得到prefix么?

8,906

社区成员

发帖
与我相关
我的任务
社区描述
XML/XSL相关问题讨论专区
社区管理员
  • XML/XSL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧