我將在javascript中創建一個xml元素來與服務器端交換數據。我發現我可以用document.createElement.But做到這一點,但我不知道如何將其轉換爲字符串。瀏覽器中是否有任何API使它更容易?或者是否有任何js lib在醞釀這個API?如何將HTMLElement轉換爲字符串
在此先感謝。
//修改
我發現瀏覽器API的XMLSerializer,它應該是序列化到字符串的正確途徑。
我將在javascript中創建一個xml元素來與服務器端交換數據。我發現我可以用document.createElement.But做到這一點,但我不知道如何將其轉換爲字符串。瀏覽器中是否有任何API使它更容易?或者是否有任何js lib在醞釀這個API?如何將HTMLElement轉換爲字符串
在此先感謝。
//修改
我發現瀏覽器API的XMLSerializer,它應該是序列化到字符串的正確途徑。
你可以得到 '外HTML' 通過克隆元素, 將它添加到一個空的 '臺下' 容器, 並閱讀容器的innerHTML。
本示例採用可選的第二個參數。
調用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;
}
有一個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);
參見How to iterate through all attributes in an HTML element?(我做到了!)
爲了讓你很可能使用innerHTML
打開和關閉標籤之間的內容如果你不想遍歷所有的子元素...
alert(element.innerHTML);
...然後使用tagName
再次獲得close標籤。
var closeTag = "</"+element.tagName+">";
alert(closeTag);
恐怕有時需要編寫獲取整個標記的代碼。 – 2010-03-19 02:38:38
如果它的XML應該全部位於一個根節點中,是嗎?如果是這樣,那麼你只需要爲根節點執行此操作 - 所有主流瀏覽器都支持innerHTML,並且會爲您提供嵌套在根節點中的X(H)TML。 (即一切!) – 2010-03-19 02:40:54
爲什麼麻煩循環元素的屬性,並從它建立一個字符串'標記'?只需將該元素包裝在ANOTHER元素中,並採用該新父元素的innerHTML。 Voila是outerHTML的即時解決方案。 – 2010-03-19 03:34:52
元件outerHTML
屬性(注:supported by Firefox after version 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
獲得元素(SANS HTML標記)內的文本。
但似乎我無法使用屬性outerHTML獲取內部文本。我認爲我真正想要的是HTML標記。 – 2010-03-19 02:34:56
Javascript outerHTML實際上有效嗎? – 2010-03-19 02:35:42
outerHTML屬性在Chrome中正常工作。 – 2010-03-19 02:37:39
這可能不適用於每個人的情況,但是當從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>
最簡單的方法是,元素TMP變量,並使其爲空,則追加新元素的副本innerHTML的,那拷貝過來的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;
這個簡單的:)
對不起,我沒聽懂你說。那麼我應該接受更多的答案嗎?但它似乎有些不能被接受。 – 2010-03-19 05:35:59
[使用內置DOM方法或原型從HTML字符串創建新DOM元素]的可能重複(http://stackoverflow.com/questions/494143/creating-a-new-dom-element-from-an- html-string-using-built-in-dom-methods-or-pro) – 2015-06-21 11:07:51