2011-01-06 2 views
2

Я использую Batik два загружаемых svg-документа и добавляю элемент с другим документом , но атрибут id происходит в сохраненном документе в некоторых атрибутах в настоящее время дважды. Поэтому, когда я пытаюсь открыть сохраненный документ с помощью Inkscape, он просто показывает ошибку, , что он не может открыть файл. Удалив некоторые из идентификаторов вручную, файл теперь можно открыть с помощью Inkscape.batik - идентификатор атрибута встречается дважды в сохраненном документе

Большое спасибо за помощь.

...

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 вашего дополнительного элемента и отрегулировать/удалить идентификаторы.

Возможно, это работа, оформляющая bug against Batik. Это не должно позволить вам генерировать незаконный xml.

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

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