gpt4 book ai didi

java - batik - id 属性在保存的文档中出现两次

转载 作者:行者123 更新时间:2023-11-30 11:56:12 25 4
gpt4 key购买 nike

我使用 Batik 两次加载一个 svg-document 并添加一个元素形成另一个它的文档,但 id 属性现在出现在保存的文档中的某些属性中两次。所以当我试图用 Inkscape 打开保存的文档时,它只是显示一个错误,它无法打开文件。通过手动删除一些 ID,现在可以使用 Inkscape 打开该文件。

非常感谢您的帮助。

...

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" />

最佳答案

如果你不需要使用id,你可以试试3 argument importNode第三个值 (trimIds) 设置为 true

除此之外,我唯一能想到的就是遍历附加元素的 DOM 并调整/删除 ID。

这可能是提交 bug against Batik 的工作.它真的不应该让你生成非法的 xml。

关于java - batik - id 属性在保存的文档中出现两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4613654/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com