Javascript 更改SVG/XML中的第一个元素
我有一个svg文件,例如以以下内容开头:Javascript 更改SVG/XML中的第一个元素,javascript,xml,svg,Javascript,Xml,Svg,我有一个svg文件,例如以以下内容开头: <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> <!-- Généré par Microsoft Visio 11.0, SVG Export
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<!-- Généré par Microsoft Visio 11.0, SVG Export, v1.0 A_QI_QCompliance_ICompliance_AAfr.svg Compliance -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events"
xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="11.6872in" height="8.79076in"
viewBox="0 0 841.476 632.935" xml:space="preserve" color-interpolation-filters="sRGB" class="st36">
使用javascript,我想更改第一行:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
进入:
<?xml-stylesheet version="1.0" encoding="UTF-8" standalone="no" type="text/css" href="../../style/css/customSVG.css"?>
我不知道如何访问此元素/节点以更改其标记名/属性
firstChild
是
标记,documentElement
是..
标记
我无法创建xml或?xml类型的元素
var nodeDoctype = document.implementation.createDocumentType(
'xml',
'xml-stylesheet version="1.0" encoding="UTF-8" standalone="no" type="text/css" href="../../style/css/customSVG.css'
);
if(document.doctype) {
document.replaceChild(nodeDoctype, document.doctype);
} else {
document.insertBefore(nodeDoctype, document.childNodes[0]);
}
根据您的评论更新:
可以使用JS更改doctype以实现兼容性查看(如下所示:),但这是一个非常讨厌的攻击,不推荐使用。理想情况下,您可以在服务器端执行此操作。因此,请使用doctype js参数,然后重新加载页面:
window.location = window.location+"?doctype=newdoctype"
这将导致页面重新加载,这可能不适合您,但这是最安全的方法 createDocumentType函数中似乎缺少一个属性。难道不是要改变标签而不是标签吗?