免責事項:それが実際にあなたの問題に対するエレガントな解決策であるかどうかに関係なく、私はあなたの質問に答えます. ジョセフはそれを問題として捉えているようです。彼がそうするのはおそらく正しいと思います。
mimetype text/xml を使用してフレームを取得しようとしても機能しません。ブラウザは処理を続行し、XML を HTML に「変換」します。それほど単純に聞こえないのはそのためです。この方法では、実際には不可能です。
この問題の簡単な回避策を紹介します。
<html>
<head>
<script>
function getXmlContents() {
/*
Note: Because of security reasons, the contents of a document can be accessed from another document only if the two documents are located in the same domain.
http://www.w3schools.com/jsref/prop_frame_contentdocument.asp
*/
var iframeDocument = document.getElementById('greetingFrame').contentDocument;
if (iframeDocument == null)
return undefined;
var xmlContainer = iframeDocument.getElementById('xmlContainer');
if (xmlContainer == null)
return undefined;
return xmlContainer.innerText == null ? xmlContainer.textContent : xmlContainer.innerText;
};
</script>
</head>
<body>
<iframe id="greetingFrame" src="helloworld.html" onload="alert(getXmlContents())">
</iframe>
</body>
</html>
XML のコンテンツは、HTML (helloworld.html) 内にラップされます。
<html>
<body>
<script id="xmlContainer" type="text/xml">
<?xml version="1.0" encoding="UTF-8"?>
<title>
Hello world
</title>
</script>
</body>
</html>
Chrome、Firefox、および IE でこれを正常にテストしました。
もちろん、上記のように XML ドキュメントを HTML スクリプト タグ内にラップする必要があります。たとえば、XML をレンダリングしたい場合は、別のタグで XML をラップすることもできますが、html エンコーディングを使用して XML をエンコードする必要があります。これはサーバー側で行う必要があります。非常に単純な (php/ruby/python/etc) スクリプトで十分です。