2016-09-30 34 views
2

我们生成SVG文件,它看起来不错,但是当我们试图用它的工作:org.apache.batik.bridge.BridgeException:空:-1属性:元素<use>的“XLink的HREF”需要

UserAgent userAgent = new UserAgentAdapter(); 
BridgeContext ctx = new BridgeContext(userAgent); 
ctx.setDynamicState(BridgeContext.DYNAMIC); 
GVTBuilder builder = new GVTBuilder(); 
builder.build(ctx, svgDocument); 

ER:org.apache.batik.bridge.BridgeException:由造成空:-1

The attribute "xlink:href" of the element <use> is required 
at org.apache.batik.bridge.SVGUseElementBridge.buildCompositeGraphicsNode(SVGUseElementBridge.java:120) [%HOME%/lib/batik-all_new.jar:1.8pre+r1435044] 
at org.apache.batik.bridge.SVGUseElementBridge.createGraphicsNode(SVGUseElementBridge.java:98) [%HOME%/lib/batik-all_new.jar:1.8pre+r1435044] 
at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(GVTBuilder.java:213) [%HOME%/lib/batik-all_new.jar:1.8pre+r1435044] 
at org.apache.batik.bridge.GVTBuilder.buildComposite(GVTBuilder.java:171) [%HOME%/lib/batik-all_new.jar:1.8pre+r1435044] 
at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(GVTBuilder.java:219) [%HOME%/lib/batik-all_new.jar:1.8pre+r1435044] 
... 
... 

但如果我们重新svgDocument从字符串或文件:

SVGDocument svg = factory.createSVGDocument("svg", new ByteArrayInputStream(svgString.getBytes())); 

SVGDocument svg = factory.createSVGDocument("svg", new FileInputStream(new File("C:\\file.xml"))); 

有没有搞错。你能帮忙吗?

谢谢。

P.S. 使用元素确实存在,但我们有一些奇怪的错误在运行时

SVGUseElement svg = (SVGUseElement)svgElement.getOwnerDocument() 
    .createElementNS("http://www.w3.org/2000/svg", "use"); 
svg.setAttribute("xlink:href", "#" + deviceObjectParameters.pictureURL.hashCode()); 
<use xlink:actuate="onLoad" xlink:type="simple" xlink:show="embed" transform="translate(0.0, 0.0) rotate(0, 0, 0) scale(1.0, 1.0)" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#1232024040"/> 

回答

1

您不能使用的setAttribute设置在XLink命名空间的属性,这只会造成在空命名空间的属性。您需要的是xlink:href属性的setAttributeNS。

svg.setAttributeNS("http://www.w3.org/1999/xlink", "href", "#" + deviceObjectParameters.pictureURL.hashCode()); 
+0

我已经做到了。但是新的err:null:-1 找不到引用的元素: “#1232024040” 在元素上指定 - 可能是'id'的问题 –

+0

可能使用hashCode看起来不对,您需要其他元素的id。 –

相关问题