Я собираюсь создать элемент XML в JavaScript для обмена данными со стороной сервера. Я обнаружил, что могу это сделать document.createElement
. Но я не знаю, как преобразовать его в строку. Есть ли в браузере какой-нибудь API, чтобы упростить задачу? Или есть какая-нибудь библиотека JS, включающая этот API?
РЕДАКТИРОВАТЬ: Я обнаружил, что API браузера XMLSerializer должен быть правильным способом сериализации в строку.
javascript
html
сяо 啸
источник
источник
Ответы:
Вы можете получить «внешний html», клонировав элемент, добавив его в пустой контейнер «вне сцены» и прочитав внутренний HTML-код контейнера.
В этом примере необязательный второй параметр.
Вызовите document.getHTML (element, true), чтобы включить потомков элемента.
document.getHTML= function(who, deep){ if(!who || !who.tagName) return ''; var txt, ax, el= document.createElement("div"); el.appendChild(who.cloneNode(false)); txt= el.innerHTML; if(deep){ ax= txt.indexOf('>')+1; txt= txt.substring(0, ax)+who.innerHTML+ txt.substring(ax); } el= null; return txt; }
источник
domElement.outerHTML
( w3schools.com/jsref/prop_html_outerhtml.asp )Свойство element
outerHTML
(примечание: поддерживается Firefox после версии 11 ) возвращает HTML-код всего элемента.пример
<div id="new-element-1">Hello world.</div> <script type="text/javascript"><!-- var element = document.getElementById("new-element-1"); var elementHtml = element.outerHTML; // <div id="new-element-1">Hello world.</div> --></script>
Точно так же вы можете использовать
innerHTML
для получения HTML, содержащегося в данном элементе, илиinnerText
для получения текста внутри элемента (без разметки HTML).Смотрите также
источник
Самый простой способ сделать это - скопировать innerHTML этого элемента в переменную tmp и сделать его пустым, затем добавить новый элемент, а после этого скопировать обратно в него переменную tmp. Вот пример, который я использовал для добавления сценария jquery в начало.
var imported = document.createElement('script'); imported.src = 'http://code.jquery.com/jquery-1.7.1.js'; var tmpHead = document.head.innerHTML; document.head.innerHTML = ""; document.head.append(imported); document.head.innerHTML += tmpHead;
Так просто :)
источник
Есть
tagName
свойство, а такжеattributes
свойство:var element = document.getElementById("wtv"); var openTag = "<"+element.tagName; for (var i = 0; i < element.attributes.length; i++) { var attrib = element.attributes[i]; openTag += " "+attrib.name + "=" + attrib.value; } openTag += ">"; alert(openTag);
См. Также Как перебрать все атрибуты в элементе HTML? (Я сделал!)
Чтобы получить содержимое между тегами open и close, вы, вероятно, могли бы использовать,
innerHTML
если не хотите перебирать все дочерние элементы ...... а затем снова получить закрывающий тег с помощью
tagName
.var closeTag = "</"+element.tagName+">"; alert(closeTag);
источник
Это может не относиться ко всем случаям, но при извлечении из xml у меня была эта проблема, которую я решил с этим.
function grab_xml(what){ var return_xml =null; $.ajax({ type: "GET", url: what, success:function(xml){return_xml =xml;}, async: false }); return(return_xml); }
затем получите xml:
var sector_xml=grab_xml("p/sector.xml"); var tt=$(sector_xml).find("pt");
Затем я сделал эту функцию для извлечения строки xml, когда мне нужно читать из файла XML, содержащего теги html.
function extract_xml_line(who){ var tmp = document.createElement("div"); tmp.appendChild(who[0]); var tmp=$(tmp.innerHTML).html(); return(tmp); }
а теперь в заключение:
var str_of_html= extract_xml_line(tt.find("intro")); //outputs the intro tag and whats inside it: helllo <b>in bold</b>
источник
Я использовал Angular, мне нужно было то же самое, и я попал на этот пост.
@ViewChild('myHTML', {static: false}) _html: ElementRef; this._html.nativeElement;
источник
Предположим, ваш элемент цел
[object HTMLDocument]
. Вы можете преобразовать его в строку следующим образом:const htmlTemplate = `<!DOCTYPE html><html lang="en"><head></head><body></body></html>`; const domparser = new DOMParser(); const doc = domparser.parseFromString(htmlTemplate, "text/html"); // [object HTMLDocument] const doctype = '<!DOCTYPE html>'; const html = doc.documentElement.outerHTML; console.log(doctype + html);
источник