首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在svg编辑器中通过setSvgString设置svg内容时,如何去除svg内容中的组标签(<g>)?

在svg编辑器中通过setSvgString设置svg内容时,如何去除svg内容中的组标签(<g>)?
EN

Stack Overflow用户
提问于 2016-05-19 12:54:16
回答 1查看 410关注 0票数 1

对于这个问题,我已经跟踪了在svg编辑器的svgcanvas.js文件中设置svg内容的执行情况,但没有成功。我甚至尝试过删除"text2xml“调用中的g标签,但没有成功。

请帮帮我。

下面是我尝试过的代码,这里我上传了svg文件,并通过reader读取该文件:

代码语言:javascript
复制
reader.onloadend = function(e) {
    var xmlString=e.target.result;
    xmlDoc = $jq.parseXML(xmlString);
    var xmlElements=xmlDoc.documentElement.childNodes;
    var reXmlElements=new Array();
    var j=0;
    for (var i=0; i<xmlElements.length; i++) {
        if(xmlElements[i].nodeName=="g") {
            //xmlElements[i].remove();
            reXmlElements[j]=xmlElements[i].children[0];
            j++;
        } else {
            //reXmlElements[j]=xmlElements[i];
        }
    }
    xmlDoc.documentElement.children=reXmlElements;
    console.log(xmlDoc.documentElement.children);
    console.log((new XMLSerializer()).serializeToString(xmlDoc));

    svgCanvas.setSvgString(e.target.result);
EN

回答 1

Stack Overflow用户

发布于 2016-05-19 20:19:49

谢谢,我已经通过做以下事情解决了这个问题:

代码语言:javascript
复制
svgCanvas.setSvgString(e.target.result);
                    svgEditor.changeZoom({value: (100*zoomlevel)});
                    //setSvgConfiguration(imprintWidth[side], imprintHeight[side], imprintLeft[side], imprintTop[side]);
                    document.querySelector("#svgcontent").setAttribute("overflow","hidden");
                    maxWidth=document.querySelector("#svgcontent").getAttribute("width");
                    maxHeight=document.querySelector("#svgcontent").getAttribute("height");

                    if($jq("#svgcontent g").length > 0 && $jq("#svgcontent g").children().length > 0) {
                        var allElements = $jq("#svgcontent g").children();
                        $jq("#svgcontent g:first").html("");
                        for(var i=0; i<allElements.length; i++) {
                            var element = allElements[i];
                            if(element.tagName == "g") {
                                for(var j=0;j<element.children.length;j++) {
                                    $jq("#svgcontent g:first").append(element.children[j]);
                                }
                            }
                        }
                        allElements = $jq("#svgcontent g").children();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37314184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档