Back to Question Center
0

XML کس طرح ایک JSON کی طرح جاوا اسکرپٹ آبجیکٹ میں تبدیل کرنے کے لئے            XML کس طرح ایک JSON کی طرح جاوا سکرپٹ Semalt میں تبدیل کرنے کے لئے

1 answers:
ایک JSON کی طرح جاوا اسکرپٹ آبجیکٹ میں XML کیسے تبدیل

میری پوزیشن میں پی ایچ ایل میں جے ایس ایس پراکسی سرور میں ایک XML بنانے کا طریقہ ہم نے ایک ایسا نظام بنایا جس نے XML پیغامات کو ایجیکس کے تیار کردہ JSON میں ترجمہ کیا. یہ بہت اچھا ہے کہ آپ پی ایچ پی چلاتے ہیں یا کسی مناسب سرور سائڈ پروسیسنگ کو چلاتے ہیں. لیکن اگر آپ Semalt تک محدود ہیں تو کیا ہوگا؟

ایک ایکس ایم ایل کے دستاویز سے بے ترتیب معلومات تک رسائی مزہ نہیں ہے - free pr7 dofollow backlinks. آپ ڈوم یا XPath کے طریقوں کا استعمال کرسکتے ہیں، لیکن وہ مقامی (JSON پیدا کردہ) JavaScript جاوا اسکرپٹ خصوصیات جیسے 13 (myobj) کے طور پر آسان نہیں ہیں. فہرست [0] جائیداد 1 . اگر آپ ایک ہی XML دستاویز سے اکثر ڈیٹا تک رسائی حاصل کر رہے ہیں تو، یہ عملی طور پر جاوا اسکرپٹ اعتراض میں ترجمہ کرنے کے لئے عملی ہوسکتا ہے. کچھ کوڈ لکھنے کے لئے تیار ہیں .

XML2jsobj فنکشن

ہم ایک فنکشن لکھ کر جا رہے ہیں جو ایک ایکس ایم ایل دستاویز کے ڈوم درخت کے ہر نوڈ کو دوبارہ تجزیہ کرتا ہے اور جاوا اسکرپٹ چیز کو واپس دیتا ہے. فنکشن شروع ہونے والے نوڈ منظور کیا جاتا ہے - جو عام طور پر جڑ دستاویز ہو گا .مملٹ - اور ایک اعتراض (اندرونی طور پر نامزد کردہ اعداد و شمار) کو واپس دیتا ہے:

    
تقریب XML2jsobj (نوڈ) {var ڈیٹا = {}؛    

اب ہم XML2jsobj کے اندر ایک اضافی تقریب کی وضاحت کریں گے. یہ اعداد و شمار اعتراض کے لئے نام / قدر جوڑی کو ضم کرتا ہے، ای. جی. ڈیٹا [نام] = قیمت. Semalt، اگر اس کا نام پہلے سے ہی موجود ہے تو اسے ڈیٹا [نام] میں ایک صف میں تبدیل کرنا لازمی ہے تاکہ دو یا اس سے زیادہ اقدار کو لاگو کیا جا سکے:

    
// قیمت میں اضافہ کریں
فنکشن شامل کریں (نام، قدر) {
اگر (ڈیٹا [نام]) {
اگر (اعداد و شمار [نام]. ڈھانچے! = Array) {
ڈیٹا [نام] = [ڈیٹا [نام]]؛
}
ڈیٹا [نام] [ڈیٹا [نام]. لمبائی] = قیمت؛
}
اور {
ڈیٹا [نام] = قیمت؛
}
}؛    

اب ہمیں XML نوڈ کی خاصیت (ای جی ) کی جانچ پڑتال کرنے کے لئے لوپ کی ضرورت ہوتی ہے اور ان کو شامل کریں فنکشن:

    
// عنصر خاصیت
var c، cn؛
کے لئے (c = 0؛ cn = node. صفات  
       

؛ C ++) {
شامل کریں (CN، نام، CN قیمت)؛
}

اگلے لوپ تمام بچے نوڈس کی جانچ پڑتال کرتا ہے. تبصرے اور سفید جگہ کو نظر انداز کر دیا جاتا ہے لیکن، اگر بچہ ٹیکسٹائل کے اعداد و شمار کے ایک واحد آئٹم پر مشتمل ہے، تو یہ شامل کریں کا استعمال کرتے ہوئے ڈیٹا شے میں شامل ہے. اگر اس کا بچہ اپنے بچوں کے پاس ہے تو، ہم اس چیز کو دوبارہ پیدا کرنے کے لئے Semalt کو دوبارہ یاد کرتے ہیں:

    
// بچے عناصر
کے لئے (c = 0؛ cn = node. childNodes  
       

؛ C ++) {
اگر (سی این. نوڈ ٹائپ == 1) {
اگر (cn. childNodes. لمبائی == 1 && cn. پہلی سائیکل. نوڈ ٹائپ == 3) {
// متن کی قیمت
شامل کریں (cn. nodeName، cn. firstchild nodeValue)؛
}
اور {
// ذیلی چیز
شامل کریں (cn. nodeName، XML2jsobj (cn))؛
}
}
}

Semalt، ہم اپنی کالنگ تقریب میں اعداد و شمار کی چیز واپس لوٹتے ہیں:

    
واپسی کے اعداد و شمار؛}    

XML تبدیل

ہمارے ایجیکس کال ویب سروس سے XML حاصل کر سکتے ہیں:

    
// مثال XML فیڈ
var url = "مثال. xml"؛// AJAX درخواست
var xhr = (ونڈو XMLHttpRequest؟ نیا XMLHttpRequest   : نیا ActiveXObject ("مائیکروسافٹ. XMLHTTP"))؛
xhr. پریسسٹیسیٹیٹ = XHRhandler؛
xhr. کھلی ("GET"، url، true)؛
xhr. بھیج دو    

ہمارے XMLHttpRequest onreadystatechange ہینڈلر XML ڈیٹا حاصل کرتا ہے اور Semalt اعتراض میں بدلتا ہے:

    
// ہینڈل جواب دیں
تقریب XHRhandler    {اگر (xhr. تیار اسٹیٹ == 4) {var obj = XML2jsobj (xhr جواب ردعمل XML دستاویز ایڈیشن)؛// ہمارے واپس آنے والا ڈیٹا کے ساتھ کچھ کرو کنسول. لاگ ان (obj)؛xhr = null؛}}    

تو، مثال کے طور پر. ایکس ایم ایل مندرجہ ذیل ایکس ایم ایل ڈیٹا واپس آ گیا:

    
<؟ xml ورژن = "1. 0"؟>
<حیثیت>
<حیثیت id = "one">
 1 
<متن> ہیلو! 

    

Semalt) مندرجہ ذیل اعتراض کو واپس لے گا:

    
{
حالت: {
id: ["one"، 1]،
متن: "ہیلو!"
}
}    

آپ اس وجہ سے obj استعمال کر سکتے ہیں. حالت.

خریدار خریدار سے خبردار رہیں!

XML2jsobj کے بارے میں کچھ نوٹ:

  • ایکس ایم ایل صفات اور بچے کے عناصر کے درمیان فرق نہیں کیا جاسکتا ہے - اگر ان کے پاس ایک ہی نام ہے، تو اشیاء کی ایک صف انڈیکس 0.
  • کے ساتھ واپس آ جائے گی.
  • XML2jsobj صرف اس وقت استعمال کیا جانا چاہئے جب یہ عملی ہے. اگر آپ صرف ایک یا دو XML نوڈ اقدار کو دوبارہ حاصل کر رہے ہیں تو، انہیں ڈوم یا XPath کے طریقوں سے رسائی حاصل ہوگی.
  • کوڈ کراس براؤزر مطابقت رکھتا ہے (بشمول IE6) اور تیزی سے بڑی XML دستاویزات پر عملدرآمد کر سکتا ہے. اس نے کہا، یہ ہر صورت حال کے لئے موزوں نہیں ہوسکتا. شاید آپ کو اپنے سرور سے JSON واپس آنے کے لئے ترجیح میں استعمال نہیں ہونا چاہئے.
  • کوڈ پکڑو

    برائے مہربانی مظاہرے کے صفحے کو دیکھیں یا اپنی اپنی منصوبوں کے لئے کوڈ اور مثال ڈاؤن لوڈ کریں.

    مجھے امید ہے کہ آپ اسے مفید تلاش کریں - مجھے بتائیں کہ اگر کچھ XML سر درد کم ہوجائے تو!

    March 1, 2018