2011-01-06 14 views
2

我使用蠟染兩個加載一個svg文檔並添加一個元素形成另一個 文檔給它,但是id屬性發生在已保存的文檔中一些屬性現在是 兩次。所以當我試圖用Inkscape打開保存的文檔時,它只顯示一個錯誤, 它無法打開文件。通過手動刪除一些ID,文件現在可以用Inkscape打開。batik-id-attribute在保存的文檔中出現兩次

非常感謝您的幫助。

...

try { 
// Load the basic symbol 
String parser = XMLResourceDescriptor.getXMLParserClassName(); 
SAXSVGDocumentFactory f = new SAXSVGDocumentFactory(parser); 
Document documentBasicSymbol = f.createSVGDocument(imgFileBasicSymbol.toURI().toString()); 


// Set the fill color of the basic symbol to symbolColor 
Element element = documentBasicSymbol.getElementById("basic_symbol"); 
setSymbolFillColor(element, symbolColor); 


// Load the supplementary symbol 
Document documentSupplemtarySymbol =  
f.createDocument(imgFileSupplementarySymbol.toURI().toString()); 

// Add it to the basic symbol: 
Node nodeSupplementarySymbol = documentBasicSymbol.importNode(documentSupplemtarySymbol.getElementById("supplementary_symbol"), true); 
     documentBasicSymbol.getDocumentElement().appendChild(nodeSupplementarySymbol); 

storeDocument(documentBasicSymbol, "SuppElementZuBasic.svg"); 

...文檔

部分:

xmlns:xlink="http://www.w3.org/1999/xlink" 
xmlns:svg="http://www.w3.org/2000/svg" zoomAndPan="magnify" 
contentStyleType="text/css" id="svg2" height="100" 
preserveAspectRatio="xMidYMid meet" 
xmlns="http://www.w3.org/2000/svg" id="svg2" version="1.2"> 
    <g id="layer1" id="layer1" 
    transform="translate(1.4982643,1.4982643)"> 
    <rect x="64.599998" y="29.674999" width="67.803474" 
    style="fill:blue;stroke:#000000;stroke-width:2.0965271;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" 
    height="37.653473" id="basic_symbol" id="basic_symbol" /> 
    </g> 
    <path d="m 116.10938,37.703125 0,10.8125 -47.531255,0 0,2.40625 47.531255,0 0,4.5 0,0.59375 0.90625,0.28125 13.49999,6 0.3125,-0.875 0.59375,-0.90625 -13.21874,-5.75 0,-17.0625 -2.09375,0 z" 
    id="supplementary_symbol" 
    style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" 
    id="supplementary_symbol" /> 

回答

1

如果您不需要使用id,你可以嘗試用3 argument importNode第三個值(trimIds)設置爲true

除此之外,我能想到的唯一的另一件事是走你的附加元素的DOM和調整/刪除的ID。

它也許可以工作在提交bug against Batik。它真的不應該讓你生成非法的XML。