次のようにxml要素を変換したい:
<asin>B0013FRNKG</asin>
javascriptの文字列へ
私はXMLSerializer
を使用しました:
new XMLSerializer().serializeToString(xml);
この文字列は、alert()およびコンソールにのみ表示されます。ページでは
[object Element][object Element]
文字列を取得したいです。
そのオブジェクトを表示する方法を教えていない。 XMLSerializerはDOMノードで動作するため、次のようにオブジェクトをどこかに追加する必要があります。
document.getElementById('SomeDiv').appendChild(xml);
また、完全なxml文字列を表示するだけの場合:
var xmlText = new XMLSerializer().serializeToString(xml);
var xmlTextNode = document.createTextNode(xmlText);
var parentDiv = document.getElementById('SomeDiv');
parentDiv.appendChild(xmlTextNode);
<script type='text/javascript'>
function xmlToString(xmlData) {
var xmlString;
//IE
if (window.ActiveXObject){
xmlString = xmlData.xml;
}
// code for Mozilla, Firefox, Opera, etc.
else{
xmlString = (new XMLSerializer()).serializeToString(xmlData);
}
return xmlString;
}
</script>
IEの場合、ブラウザの互換性の問題のためにこれを使用します。
function getXmlString(xml) {
if (window.ActiveXObject) { return xml.xml; }
return new XMLSerializer().serializeToString(xml);
}
alert(getXmlString(xml));
結果を次のように囲んでみましたか…
(new XMLSerializer()).serializeToString(xml)
また、代わりにコンソールを使用してコンテンツをよりよく表示します。
console.log((new XMLSerializer()).serializeToString(xml));
DOM要素<asin>B0013FRNKG</asin>
はオブジェクトelement
に格納され、次を使用して値にアクセスできます。
element.textContent
これに従って、javascript内に文字列として保存されているxmlデータからデータを印刷、追加します
txt="<papers>"+"<paper>"+
"<author>athor name</author>"+
"<title>title</title>"+
"<path>path</path>"+
"<track>which tack</track>"+
"</paper>"+
"<paper>"+
"<author>athor name</author>"+
"<title>title</title>"+
"<path>path</path>"+
"<track>which tack</track>"+
"</paper>"+
"<paper>"+
"<author>athor name</author>"+
"<title>title</title>"+
"<path>path</path>"+
"<track>which tack</track>"+
"</paper>"+
"<papers>";
if (window.DOMParser)
{
parser=new DOMParser();
xmlDoc=parser.parseFromString(txt,"text/xml");
}
else // Internet Explorer
{
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async=false;
xmlDoc.loadXML(txt);
}
x=xmlDoc.getElementsByTagName("paper");
for (var i = 0; i < x.length; i++) {
var athor =x[i].childNodes[0].firstChild.nodeValue;
var title = x[i].childNodes[1].firstChild.nodeValue;
var path = x[i].childNodes[2].firstChild.nodeValue;
var tack =x[i].childNodes[3].firstChild.nodeValue;
//do something with these values...
//each iteration gives one paper details
var xml=document.getElementById("element_id");//<div id="element_id"></div>
var li = document.createElement("br");// create a new <br>
newlink = document.createElement('A'); // creating an <a> element
newlink.innerHTML = athor;// adding <a>athor value here</a>
newlink.setAttribute('href', path);// <a href="path"></a>
newlink.appendChild(li);// <a href="path">athor</a><br>
document.getElementById("element_id").appendChild(newlink);//finaly it becomes <div id="element_id"><a href="path">athor</a><br></div>
}