当前位置:  开发笔记 > 编程语言 > 正文

如何在javascript中为默认命名空间中的XML节点分配前缀?

如何解决《如何在javascript中为默认命名空间中的XML节点分配前缀?》经验,为你挑选了1个好方法。

我有一个XML片段,我使用jQuery parseXML解析.大多数节点没有前缀,它们在默认命名空间中,有些具有前缀.

我需要将默认名称空间中的所有节点与前缀相关联.我已经确保这个前缀已经在XML的字符串版本中声明,并带有一个神奇的字符串替换(即xmlns:my="http://mydefaulns.com"在加载XML时在根级别声明.)

我尝试了以下方法:

var defaultNs="http://mydefaulns.com";
var xmlDoc = $.parseXML(stringXML);
$(xmlDoc).find("*").each(function() {
    if (this.namespaceURI=== defaultNs) {
        this.prefix = "my";
    }
}

但它没有影响,当我写回来时,仍然没有前缀.

我还尝试加载XML并调用:

xmlDoc.firstChild.removeAttribute("xmlns")

但该属性未被删除,因此前缀不会神奇地更新.

那时,我认为获得我想要的结果的唯一方法是使用新的前缀名称重新创建所有节点,复制所有属性.

这看起来非常极端,还有另一种方式吗?

输入(字符串):


    Value
    Value2

期望的输出:


    Value
    Value2

实际的XML更复杂,但这给了你一个想法.

我用jQuery.parse解析XML,然后使用返回字符串版本

function XMLDocumentToString(oXML) {
    if (typeof oXML.xml != "undefined") {
       return oXML.xml;
    } else if (XMLSerializer) {
        return (new XMLSerializer().serializeToString(oXML));
    } else {
        throw "Unable to serialize the XML";
    }    
 }

ibrahim mahr.. 5

无需解析XML字符串只需使用replace带有regular expressions这样的:

var prefix = "my:";
stringXML = stringXML.replace(/(<\/?)(\w+)(?!:)(\b)/g, "$1" + prefix + "$2$3");

这将匹配任何字母序列(有效的标签名称)恰好在a <(<必要的,/是可选的)之后,而不是a :后面跟着\b.

var stringXML = 'ValueValue2';

console.log("BEFORE: ", stringXML);

var prefix = "my:";
stringXML = stringXML.replace(/(<\/?)(\w+)(?!:)(\b)/g, "$1" + prefix + "$2$3");

console.log("AFTER: ", stringXML);



1> ibrahim mahr..:

无需解析XML字符串只需使用replace带有regular expressions这样的:

var prefix = "my:";
stringXML = stringXML.replace(/(<\/?)(\w+)(?!:)(\b)/g, "$1" + prefix + "$2$3");

这将匹配任何字母序列(有效的标签名称)恰好在a <(<必要的,/是可选的)之后,而不是a :后面跟着\b.

var stringXML = 'ValueValue2';

console.log("BEFORE: ", stringXML);

var prefix = "my:";
stringXML = stringXML.replace(/(<\/?)(\w+)(?!:)(\b)/g, "$1" + prefix + "$2$3");

console.log("AFTER: ", stringXML);
推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有