Xml org.apache.batik.bridge.BridgeException:null:-1属性“0”;xlink:href";元素的属性<;使用>;是必需的
我们生成SVG文档,它看起来不错,但当我们尝试使用它时:Xml org.apache.batik.bridge.BridgeException:null:-1属性“0”;xlink:href";元素的属性<;使用>;是必需的,xml,apache,svg,element,batik,Xml,Apache,Svg,Element,Batik,我们生成SVG文档,它看起来不错,但当我们尝试使用它时: UserAgent userAgent = new UserAgentAdapter(); BridgeContext ctx = new BridgeContext(userAgent); ctx.setDynamicState(BridgeContext.DYNAMIC); GVTBuilder builder = new GVTBuilder(); builder.build(ctx, svgDocument); ER:原因:or
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.bridge异常:null:-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]
...
...
或
没有错。你能帮忙吗
谢谢
注意:use元素确实存在,但运行时出现了一些奇怪的错误
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"/>
SVGUseElement svg=(SVGUseElement)svgElement.getOwnerDocument()
.CreateElements(“http://www.w3.org/2000/svg“,”使用“);
setAttribute(“xlink:href”,“#”+deviceObjectParameters.pictureURL.hashCode());
不能使用setAttribute在xlink命名空间中设置属性,它只会在空命名空间中创建属性。您需要的是设置xlink:href属性的属性
svg.setAttributeNS("http://www.w3.org/1999/xlink", "href", "#" + deviceObjectParameters.pictureURL.hashCode());
我做到了。但新错误:null:-1找不到引用的元素:“#1232024040”在元素上指定-可能是“id”的问题,可能使用的哈希代码错误,您需要其他元素的id。我们也遇到了同样的问题,原因是命名空间uri错误。在xsl模板中,我们有名称空间
xmlns:xlink=”http://www.w3.org/TR/xlink“
将其更改为
xmlns:xlink=”http://www.w3.org/1999/xlink“
解决了问题
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"/>
svg.setAttributeNS("http://www.w3.org/1999/xlink", "href", "#" + deviceObjectParameters.pictureURL.hashCode());