2012-02-06 5 views
0

Я пытаюсь добавить атрибут в узел xml. Я создал следующую функцию:XML node: добавить атрибут с пространством имен

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, и он отлично работает.

Вы знаете, как я могу добавить пространство имен? Или вы знаете другую альтернативу для создания атрибута с пространством имен?

Thanks

+0

Что вы передаете как 'attrname'? – Tomalak

+0

I pass: "co: internalcollectiontype" – SergioKastro

+0

Я нашел решение (возможно, не самое лучшее). Я не могу отправить ответ, мне нужно подождать 8 часов. до тех пор вот мой комментарий: var n = xmlNode.selectSingleNode (путь); if (cb.browser.ie) // IE n.setAttributeNode (attr); еще n.setAttributeNodeNS (attr); – SergioKastro

ответ

1

Я нашел возможное решение. По крайней мере, теперь он работает для трех браузеров: IE, Firefox и Chrome.

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); 
} 

Благодаря «Томалаку» за его помощью.

Смежные вопросы