Показать сообщение отдельно
  #8 (permalink)  
Старый 08.05.2018, 15:21
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Цитата:
сделано опасное умозаключение что 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);

В конце - все элементы с классом

Последний раз редактировалось Dilettante_Pro, 08.05.2018 в 15:47.
Ответить с цитированием