Цитата:
|
сделано опасное умозаключение что svg.querySelector('style').childNodes[1].nodeValue это CDATA... а вдруг оно будет в childNodes[2]?!
|
Это ведь можно проверить.
function strToXML(xmlString){
var dom_parser = ("DOMParser" in window && (new DOMParser()).parseFromString) ||
(window.ActiveXObject && function(_xmlString) {
var xml_doc = new ActiveXObject('Microsoft.XMLDOM');
xml_doc.async = 'false';
xml_doc.loadXML(_xmlString);
return xml_doc;
});
if(!dom_parser){
return false;
}
return dom_parser.call("DOMParser" in window && (new DOMParser()) || window, xmlString, 'text/xml');
}
var xmls = `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="0.23622in" height="0.23622in" viewBox="0 0 17.0079 17.0079" xml:space="preserve" color-interpolation-filters="sRGB" class="_st3">
<style type="text/css">
<![CDATA[
._st1 {fill:#7f7f7f;stroke:#595959;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
._st2 {fill:#595959;font-family:Calibri;font-size:0.833336em}
._st3 {fill:none;fill-rule:evenodd;font-size:12px;overflow:visible;stroke-linecap:square;stroke-miterlimit:3}
]]>
</style>
<g>
<g id="shape1-1">
<rect x="0" y="0" width="17.0079" height="17.0079" class="_st1"/>
<text x="6.19" y="11.5" class="_st2">?</text>
</g>
</g>
</svg>`;
var content = strToXML(xmls, 'image/svg+xml');
var svg = content.querySelector('svg');
alert(svg.querySelector('style').childNodes[1].nodeName);
var cdata = svg.querySelector('style').childNodes[1].nodeValue;
alert(cdata);
alert(content.querySelectorAll('[class]').length);
В конце - все элементы с классом