XMLノード:名前空間を持つ属性を追加する

XMLノードに属性を追加しようとしています。私は以下の関数を作りました

  function AddAttribute(xmlNode, attrname, attrvalue, path) {
    var attr;
    if (isIE())
        attr = xmlNode.ownerDocument.createNode(2, attrname, "http://mydomain/MyNameSpace");
    else
        attr = xmlNode.ownerDocument.createAttributeNS("http://mydomain/MyNameSpace", attrname);

    attr.nodeValue = attrvalue;
    var n = xmlNode.selectSingleNode(path);
    n.setAttributeNode(attr);
} 

このコードはFirefoxでは動作しません。ノードを追加しますが、名前空間は追加されません。 私はIEとChromeで試してみましたが、うまくいきます。

名前空間を追加するにはどうすればいいですか? あるいは、名前空間を持つ属性を作成するための他の方法を知っていますか?

ありがとう

0
attrname として何を渡しますか?
追加された 著者 Tomalak,
if(xmlNode.ownerDocument.createAttributeNS)を試してください。これはブラウザの盗聴から独立しています。
追加された 著者 Tomalak,
私はパスします: "co:internalcollectiontype"
追加された 著者 SergioKastro,
私は解決策を見つけました(恐らく最良のものではありません)。私は答えとして投稿することはできません、私は8時間待つ必要があります。それまではここに私のコメントがあります:var n = xmlNode.selectSingleNode(path); if(cb.browser.ie)// IE n.setAttributeNode(attr);そうでなければn.setAttributeNodeNS(attr);
追加された 著者 SergioKastro,
私は8時間後にすべての機能を追加します:-o。
追加された 著者 SergioKastro,

1 答え

私は可能な解決策を見つけました。少なくともIE、Firefox、Chromeの3つのブラウザで動作します。

 function AddAttribute(xmlNode, attrname, attrvalue, path) {
    var attr;
    if (xmlNode.ownerDocument.createAttributeNS)
       attr = xmlNode.ownerDocument.createAttributeNS("http://www.firmglobal.com/MyNameSpace", attrname);
    else
       attr = xmlNode.ownerDocument.createNode(2, attrname, "http://www.firmglobal.com/MyNameSpace");

    attr.nodeValue = attrvalue;
    var n = xmlNode.selectSingleNode(path);

    //Set the new attribute into the xmlNode
    if (n.setAttributeNodeNS)
       n.setAttributeNodeNS(attr);  
    else
        n.setAttributeNode(attr);  
}

彼の助けを "Tomalak"に感謝します。

1
追加された
JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript