2016-07-26 60 views
1

我有一個樣品SVG文件(姑且稱之爲「myImage.svg」)作爲代碼:如何讀取包含在我的項目中的svg文件並寫入它?

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<!-- Created with Inkscape (http://www.inkscape.org/) --> 

<svg> 
    <g> 
    <rect 
     style="fill:#ff8080;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" 
     id="rect3336" 
     width="100" 
     height="10" 
     x="0" 
     y="412.36221" /> 
    </g> 
</svg> 

它包含在我的項目的目錄。

在另一個JavaScript文件,我願做這樣的事情:

var file = getFile("myImage.svg"); 
var rect = file.getElement("rect"); 
rect.getAttribute("width") = "1000"; 

我讀過StackOverflow上許多問題,但我在在哪裏開始讓我的文件丟失。

+0

預計結果來加載,更改和保存文件名相同的文件在本地,或在服務器?本地的 – guest271314

+0

@ guest271314很好。 :) – ravp

回答

1

您可以使用XMLHttpRequest()DOMParser()String.prototype.indexOf()String.prototype.slice()<a>元素,在<a>元素download屬性,encodeURIComponent()

var request = new XMLHttpRequest(); 
    request.open("GET", "myImage.svg"); 
    request.setRequestHeader("Content-Type", "image/svg+xml"); 
    request.addEventListener("load", function(event) { 
    var response = event.target.responseText; 
    var doc = new DOMParser(); 
    var xml = doc.parseFromString(response, "image/svg+xml"); 
    var rect = xml.getElementById("rect3336"); 
    rect.setAttribute("width", 1000); 
    var result = response.slice(0, response.indexOf("<svg")); 
    result += xml.documentElement.outerHTML; 
    var a = document.createElement("a"); 
    a.download = "myImage.svg"; 
    a.href = "data:image/svg+xml," + encodeURIComponent(result); 
    document.body.appendChild(a); 
    a.click(); 
    document.body.removeChild(a); 
    }); 
    request.send(); 
+0

@ravp另請參見http://stackoverflow.com/questions/30563157/edit-save-self-modifying-html-document-format-generated-html-javascript – guest271314

相關問題