PDA

View Full Version : خواندن از فایل XML با جاوا اسکریپت



fazel-d
جمعه 19 تیر 1388, 10:24 صبح
با سلام
آیا می توان یک فایل XML را با جاوااسکریپت خواند؟
من می خوام توی فایلم (XML) که هر تگش یه ID منحصر به فرد دارد رو بخونم و در یک تگ <P> بریزم
امیدوارم منظورم را فهمیده باشید.

raravaice
جمعه 19 تیر 1388, 12:27 عصر
با جاوا اسکریپت امکان باز گشایی فایل را ندارید ولی میتوانید محتویات یک فایل را به صورت text در یک متغییر جاوا اسکریپت ذخیره کنید و پردازش خود را انجام دهید.

در IE با استفاده از :



xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.loadXML(yourtext);



و برای دیگر مرورگرها :



parser=new DOMParser();
xmlDoc=parser.parseFromString(yourtext,"text/xml");


که با استفاده از getElementsByTagName و childNodes و nodeValue میتوانید به راحتی به هدف مورد نظر برسید.

موفق باشید

eAmin
جمعه 19 تیر 1388, 21:47 عصر
سلام.

با جاوا اسکریپت امکان باز گشایی فایل را ندارید
در مورد فایلهای xml این قضیه یه خرده فرق می کنه، raravaice جان. (;
قبلا در فروم دیگه به این سوال پاسخ داده شده، اگر مایل بودید می تونید به اون آدرس مراجعه کنید.
http://forum.p30world.com/showthread.php?t=327316

raravaice
شنبه 20 تیر 1388, 13:41 عصر
جالب بود. نمونه کد را اینجا هم بزار بفرستمش توی فهرست ;)

موفق باشید

fazel-d
شنبه 20 تیر 1388, 19:42 عصر
<html>
<head>
<script type="text/javascript">
function loadXMLDoc(dname)
{
var xmlDoc;
if (window.XMLHttpRequest)
{
xmlDoc=new window.XMLHttpRequest();
xmlDoc.open("GET",dname,false);
xmlDoc.send("");
return xmlDoc.responseXML;
}
// IE 5 and IE 6
else if (ActiveXObject("Microsoft.XMLDOM"))
{
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async=false;
xmlDoc.load(dname);
return xmlDoc;
}
alert("Error loading document");
return null;
}
</script>
</head>
<body>

<h1>W3Schools Internal Note</h1>
<p><b>To:</b> <span id="to"></span><br />
<b>From:</b> <span id="from"></span><br />
<b>Message:</b> <span id="message"></span>

<script type="text/javascript">
xmlDoc=loadXMLDoc("note.xml");
document.getElementById("to").innerHTML=xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue;
document.getElementById("from").innerHTML=xmlDoc.getElementsByTagName("from")[0].childNodes[0].nodeValue;
document.getElementById("message").innerHTML=xmlDoc.getElementsByTagName("body")[0].childNodes[0].nodeValue;
</script>

</body>
</html>

من کد بالا رو با ASP.NET 3.5 تست کردم ولی بعضی از Property ها و توابع رو نداره
قابل بحثه در فرم ASP.NET
منبع W3Schools.com

fazel-d
شنبه 20 تیر 1388, 19:44 عصر
سایت http://forum.p30world.com/showthread.php?t=327316

// works only in ie, ff & opera
window.onload = function() {
var xml = new oXML();

xml.load("tt.xml");
if (window.clipboardData) {
xml.async = false;
if (xml.readyState == 4) {
callback(xml);
}
} else {
xml.onload = function() { callback(xml) };
}
};

function oXML() {
return (window.ActiveXObject) ?
new ActiveXObject('Microsoft.XMLDOM') :
document.implementation.createDocument('', '', null);
}

function callback(xml) {
var nodes = xml.getElementsByTagName("test");
for (var i = 0; i < nodes.length; i++) {
var ele = nodes[i].getElementsByTagName("name")[0].childNodes[0];

// Lo00oL, thanx to neopersia ( Yaser ), ;)
var val;
try {
val = ele.nodeValue;
}
catch(e) {
val = ele.textContent;
}

alert(val);
}
};


// xml
<?xml version="1.0" encoding="UTF-8" ?>
<test>
<name>eAmin</name>
</test>

ashid098
جمعه 19 دی 1393, 06:43 صبح
سلام میشه فایل ها رو ویرایش هم کرد البته شدن که میشه اخه من ی کد دارم ولی درست کار نمی کنه فقط یکبار کار میکنه