用手工代碼我的XML是這樣的:我可以把所有namspace定義頂級元素與JAXB
<?xml version="1.0" encoding="UTF-8"?>
<metadata xmlns="http://musicbrainz.org/ns/mmd-1.0#"
xmlns:ext="http://musicbrainz.org/ns/ext-1.0#">
<artist-list offset="0" count="8">
<artist type="Person" id="00ed154e-8679-42f0-8f42-e59bd7e185af"
ext:score="100">
現在使用JAXB這是好多了,但雖然XML是完全有效的,我需要給力了把元數據元素中的xmlns:ext =「http://musicbrainz.org/ns/ext#-1.0」放在藝術家元素中,以便與我無法控制的客戶端代碼相互兼容。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<metadata xmlns="http://musicbrainz.org/ns/mmd-1.0#">
<artist-list offset="0" count="4">
<artist type="Person" id="00ed154e-8679-42f0-8f42-e59bd7e185af"
ext:score="100" xmlns:ext="http://musicbrainz.org/ns/ext#-1.0">
請問可以嗎?
編輯:工作了一它替換字符串,因爲我只需要對付一個特定的情況下
String xml = sw.toString();
//Remove extension namespace definition
xml=xml.replace("xmlns:ext=\"http://musicbrainz.org/ns/ext#-1.0","");
//Add it to the top instead
xml=xml.replace("<metadata xmlns=\"http://musicbrainz.org/ns/mmd-1.0#\">",
"<metadata xmlns=\"http://musicbrainz.org/ns/mmd-1.0#\" xmlns:ext=\"http://musicbrainz.org/ns/ext-1.0#\">");
//Now write out to the proper output stream
out.write(xml);
使用字符串替換 – 2011-05-24 11:50:10
如果現有元素中存在額外的空白,則替換將不起作用。 – jarnbjo 2011-05-24 13:43:10
true,但最初的xml是由jaxb生成的,並且它總是生成相同的,所以在這種情況下這將始終有效。 – 2011-05-24 16:47:53