Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Text 如何将svg树作为文本插入DOM_Text_Svg_Xmlnode - Fatal编程技术网

Text 如何将svg树作为文本插入DOM

Text 如何将svg树作为文本插入DOM,text,svg,xmlnode,Text,Svg,Xmlnode,我已经嵌入了我使用ajax创建的Dynamicly的svg $.ajax({ url: 'file.svg', dataType: 'text', success: function(svg) { var svg = $(svg).appendTo('body'); var shape = svg.find('g#shape'); // how to get shape as text. } }); 如何获得svg树,例如,一个路径很少的组,作为文本,与

我已经嵌入了我使用ajax创建的Dynamicly的svg

$.ajax({
  url: 'file.svg',
  dataType: 'text',
  success: function(svg) {
    var svg = $(svg).appendTo('body');
    var shape = svg.find('g#shape');
    // how to get shape as text.
  }
});

如何获得svg树,例如,一个路径很少的组,作为文本,与jQuery中的html工作相同?

我找到了一种方法,我编写了这个插件,返回svg的文本,可能会与嵌入html DOM的任何xml一起工作

$.fn.xml = function() {
    function serialize(node) {
        var i;
        var text = '<' + node.nodeName;
        for(i = 0; i < node.attributes.length; ++i) {
            text += ' ' + node.attributes[i].name + '="' +
                    node.attributes[i].value + '"';
        }
        text += '>';
        if (node.childNodes.length) {
            for (i = 0; i < node.childNodes.length; ++i) {
                if (node.childNodes[i] instanceof Text) {
                    text += node.childNodes[i].wholeText
                } else if (node.childNodes[i] instanceof SVGElement) {
                    text += serialize(node.childNodes[i]);
                }
            }
        }
        return text + '</' + node.nodeName + '>';;
    }
    return serialize(this[0]);   
};

我找到了一种方法,我编写了这个插件,它返回SVG的文本,可能可以处理嵌入HTMLDOM中的任何xml

$.fn.xml = function() {
    function serialize(node) {
        var i;
        var text = '<' + node.nodeName;
        for(i = 0; i < node.attributes.length; ++i) {
            text += ' ' + node.attributes[i].name + '="' +
                    node.attributes[i].value + '"';
        }
        text += '>';
        if (node.childNodes.length) {
            for (i = 0; i < node.childNodes.length; ++i) {
                if (node.childNodes[i] instanceof Text) {
                    text += node.childNodes[i].wholeText
                } else if (node.childNodes[i] instanceof SVGElement) {
                    text += serialize(node.childNodes[i]);
                }
            }
        }
        return text + '</' + node.nodeName + '>';;
    }
    return serialize(this[0]);   
};

可以使用XMLSerializer序列化节点。像这样的

var XMLS = new XMLSerializer(); 
var string = XMLS.serializeToString(node);

可以使用XMLSerializer序列化节点。像这样的

var XMLS = new XMLSerializer(); 
var string = XMLS.serializeToString(node);

根据您的浏览器,它可以使用以下两种序列化程序之一:

function xmltostring(domElem) { // Input the NODE of the DOM element
  if (window.XMLSerializer) { // FF, Chrome, IE10 has an internal serializer
    var XMLS = new XMLSerializer();
    var xmlString = XMLS.serializeToString(domElem);
  } else if (window.ActiveXObject){  // IE9 uses ActiveX
    var xmlString = domElem.xml;
  }
  return xmlString;
}

注意:Safari也适用。IE8及以下版本无法处理SVG本机需要的插件,未经此功能测试

根据您的浏览器,它可以使用以下两种序列化程序之一:

function xmltostring(domElem) { // Input the NODE of the DOM element
  if (window.XMLSerializer) { // FF, Chrome, IE10 has an internal serializer
    var XMLS = new XMLSerializer();
    var xmlString = XMLS.serializeToString(domElem);
  } else if (window.ActiveXObject){  // IE9 uses ActiveX
    var xmlString = domElem.xml;
  }
  return xmlString;
}
注意:Safari也适用。IE8及以下版本无法处理SVG本机需要的插件,未经此功能测试