Javascript 如何读取项目中包含的svg文件并将其写入?
我有一个示例svg文件(我们称之为“myImage.svg”)作为代码:Javascript 如何读取项目中包含的svg文件并将其写入?,javascript,svg,Javascript,Svg,我有一个示例svg文件(我们称之为“myImage.svg”)作为代码: 我已经读了很多关于StackOverflow的问题,但是我不知道从哪里开始获取我的文件。你可以使用XMLHttpRequest(),DOMParser(),String.prototype.indexOf(),String.prototype.slice(),元素,下载属性在元素,encodeURIComponent() var-request=new-XMLHttpRequest(); 打开(“GET”,“myImage
我已经读了很多关于StackOverflow的问题,但是我不知道从哪里开始获取我的文件。你可以使用
XMLHttpRequest()
,DOMParser()
,String.prototype.indexOf()
,String.prototype.slice()
,元素,下载属性在
元素,encodeURIComponent()
var-request=new-XMLHttpRequest();
打开(“GET”,“myImage.svg”);
setRequestHeader(“内容类型”、“图像/svg+xml”);
addEventListener(“加载”),函数(事件){
var response=event.target.responseText;
var doc=new DOMParser();
var xml=doc.parseFromString(响应,“image/svg+xml”);
var rect=xml.getElementById(“rect3336”);
rect.setAttribute(“宽度”,1000);
var result=response.slice(0,response.indexOf(“预期结果是本地加载、更改和保存具有相同文件名的文件,还是在服务器上?@guest271314 local很好:)@ravp See也不必使用get请求在本地读/写文件。
<?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>
var file = getFile("myImage.svg");
var rect = file.getElement("rect");
rect.getAttribute("width") = "1000";
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();