Stiamo usando dom4j 1.6.1, per analizzare la comunicazione XML da qualche parte. A volte, il balise ha menzionato lo spazio dei nomi (ad esempio:) e talvolta non(). Ed è la chiamata di Element.selectSingleNode (String s) non riesce.Pulizia della gestione spazio dei nomi con dom4j
Per ora abbiamo 3 soluzioni, e non siamo felici con loro
1 - Rimuovere tutti occorrenza spazio dei nomi prima di fare qualsiasi cosa con il documento XML
xml = xml .replaceAll("xmlns=\"[^\"]*\"","");
xml = xml .replaceAll("ds:","");
xml = xml .replaceAll("etm:","");
[...] // and so on for each kind of namespace
2 - Rimuovere namespace poco prima di ottenere un nodo chiamando
Element.remove(Namespace ns)
Ma è funziona solo per un nodo e il primo livello di bambino
3 - ingombrare il codice da
node = rootElement.selectSingleNode(NameWithoutNameSpace)
if (node == null)
node = rootElement.selectSingleNode(NameWithNameSpace)
Allora ... cosa ne pensi? La strega è la meno peggio? Hai un'altra soluzione da proporre?
cercherò di scavare il doc su namespace con il prefisso nullo. Grazie comunque. Informazioni sull'origine del file XML: theire non è il modo in cui cambiano nulla. Ma il file con o senza spazio dei nomi è valido. Con i file, costruiamo oggetti, che utilizziamo nel nostro sistema. Ma non abbiamo mai "scritto" qualcosa. (Non abbiamo il diritto di modificare il file xml) –