2015-05-18 4 views
2

Я в XML:Можем ли мы изменить имя переменной пространства имен XML в JDOM?

<OTC_RM xmlns="OTC_RM_11-0" xmlns:ns2="http://www.fpml.org/2010/FpML-4-9"> 

Я хочу, чтобы изменить имя переменной пространства имен из ns2 к чему-то еще сказать Fp используя JDOM. И изменение должно отражать все XML-документы.

Возможно ли это?

ответ

3

Изменение имени достаточно просто (удалить и заменить пространство имен). К сожалению, вы вряд ли сможете это сделать для реальных элементов, которые используют это пространство имен.

Простое решение (если у вас есть Element экземпляр otcrm:.

Namespace fp = Namespace.getNamespace("fp", "http://www.fpml.org/2010/FpML-4-9"); 
Namespace ns2 = Namespace.getNamespace("ns2", "http://www.fpml.org/2010/FpML-4-9"); 

otcrm.addNamespaceDeclaration(fp); 
otcrm.removeNamespaceDeclaration(ns2); 

Это будет удалить объявление NS2, и добавить объявление Fp Это только для указанного элемента, хотя любые дочерние элементы. что использование (d) префикс ns2 пространства имен будет просто «повторно объявить», и продолжать с этим префиксом.

реальная хитрость заключается в том, чтобы перебирать все дочерние элементы, а также изменять любые случаи, когда он используется.

for (Element e : otcrm.getDescendants(Filters.element())) { 
    if (e.getNamespace() == ns2) { 
     e.setNamespace(fp); 
    } 
} 

Это изменит все префиксы элементов на новый.

+0

Спасибо rolfl. Именно то, что я искал. –

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

  • Нет связанных вопросов^_^