正如問題所述,它只是逃脫了我的記憶如何在javascript中顯示xml,我想在頁面上的div中顯示一些源xml,它位於另一個div中xml的處理結果旁邊。如何在javascript中顯示xml?
不記得,如果有一個相當於JavaScript的逃生實體轉換客戶
注意上:將XML文件是擔任從服務器,所以我需要一個客戶端解決方案
注意:主要的問題是XML並不在大多數瀏覽器,所有的括號和屬性消失正確渲染,讓你用文本看起來並不像XML
正如問題所述,它只是逃脫了我的記憶如何在javascript中顯示xml,我想在頁面上的div中顯示一些源xml,它位於另一個div中xml的處理結果旁邊。如何在javascript中顯示xml?
不記得,如果有一個相當於JavaScript的逃生實體轉換客戶
注意上:將XML文件是擔任從服務器,所以我需要一個客戶端解決方案
注意:主要的問題是XML並不在大多數瀏覽器,所有的括號和屬性消失正確渲染,讓你用文本看起來並不像XML
如果您希望瀏覽器呈現你XML
爲XML
,它必須在它自己的文件,像iframe
,或frame
。 DIV
不會做這項工作!
此外,在服務於iframe
的請求的HTTP
標題中,您應發送Content-Type: text/xml
,以便瀏覽器可以瞭解此內容爲XML
。
但是,如果你真的需要在DIV中看到它,你將不得不自己構建一個XML
渲染函數XML2HTML
。如果您的XML
字符串已經格式化(換行符和製表符),您可以使用HTML
PRE
標籤。在這種情況下,您必須將<
替換爲XML
字符串中的>
。
結論:The browser
無法在同一文檔中呈現XML
和HTML
。如果你需要它,你只需要解決它。
一種技術是使用兩個IFRAME設置爲從所述服務器提供的相應的XML文件中的src屬性的元素(假設它是通過一個虛擬目錄曝光):
<iframe src="/myapp/Document1.xml"><iframe src="/myapp/Document2.xml">
或者,也可能使用AJAX類型請求來檢索XML文檔和然後將它們嵌入在HTML文檔中動態地使用類似:
getElementById("myDiv").innerText = ajax.response;
這裏有一個功能你:
<script type="text/javascript">
<!--
function xml_to_string(xml_node)
{
if (xml_node.xml)
return xml_node.xml;
else if (XMLSerializer)
{
var xml_serializer = new XMLSerializer();
return xml_serializer.serializeToString(xml_node);
}
else
{
alert("ERROR: Extremely old browser");
return "";
}
}
// display in alert box
alert(xml_to_string(my_xml));
// display in an XHTML element
document.getElementById("my-element").innerHTML = xml_to_string(my_xml);
-->
</script>
的問題是,你有逃跑的HTML解析器會解釋爲標記的字符:<,>,&,在某些情況下「和」
核心JavaScript不爲你提供這個,但許多附加庫做
如果您不想僅爲此使用整個JavaScript框架...
function insertLiteral(literalString, targetElement)
{
var textNode = document.createTextNode(literalString);
targetElement.appendChild(textNode)
return textNode;
}
// test it (for the example, I assume #targetDiv is there but empty)
var xmlString = "<this><is_some><xml with='attributes' /></is_some></this>";
var targetElement = document.getElementById("targetDiv");
var xmlTextNode = insertLiteral(xmlString, targetElement);
#targetDiv
可以利用CSS定義樣式:
#targetDiv {
font-family: fixed;
white-space: pre;
}
使用Ajax獲取您的XML和簡單地把結果在textarea
。以任何你想要的方式來設置textarea。
這是我發現顯示XML作爲同一頁面上的文本複製和粘貼的最簡單的方法:
var xml = document.getElementById('svg_element').innerHTML;
document.getElementById('svg_pre').innerText = xml;
問題XML不會在大多數瀏覽器正確地呈現,所有的括號和屬性消失,留下的文字看起來不像xml – 2008-12-08 11:45:36
這兩種技術都應該很好地顯示它。請注意,第二種技術使用「innerText」而不是「innerHTML」,否則將會出現您所描述的內容。 – 2008-12-08 11:52:44
是的你是對的,沒有注意到那裏的「innerText」:) – 2008-12-08 11:59:30