SAX پارسر کا استعمال کرتے ہوئے XML فائل کی تجزیہ کرنا



جاوا XML فائل کو پارس کرنے کے ل numerous متعدد طریقے مہیا کرتا ہے جیسے DOM پارسر ، SAX پارسر یا اسٹیکس پارسر کا استعمال کرتے ہوئے XML فائل کو پارس کرنا۔

جاوا XML فائل کو پارس کرنے کے ل numerous متعدد طریقے مہیا کرتا ہے۔ مثال کے طور پر ، DOM تجزیہ کار ، SAX تجزیہ کار یا اسٹیکس پارسر کا استعمال کرتے ہوئے XML فائل کی تجزیہ کرنا۔ اس پوسٹ میں ہم دیکھیں گے کہ SAX پارسر کا استعمال کرتے ہوئے XML فائل کو کیسے پارس کرنا ہے





SAX پارسر کا استعمال کرتے ہوئے XML فائلوں کی تجزیہ کرنے کے بارے میں تفصیلات میں جانے سے پہلے ، پہلے یہ دیکھیں کہ مختلف پارسر کے ذریعے تجزیہ کرنے میں کیا فرق ہے اور جب ایک کو دوسرے پر منتخب کرنا ہے۔

SAX پارسر - SAX XML کے لئے آسان API کا مخفف ہے۔ SAX پارسر XML فائل لائن کو لائن کے ذریعہ تجزیہ کرتا ہے اور جب واقعات کا افتتاحی ٹیگ ، اختتامی ٹیگ یا XML فائل میں کیریکٹر ڈیٹا کا سامنا ہوتا ہے تو وہ واقعات کو متحرک کرتا ہے۔ یہی وجہ ہے کہ SAX پارسر کو واقعہ پر مبنی پارسر کہا جاتا ہے



ڈوم پارس - ڈوم دستاویز آبجیکٹ ماڈل کا مخفف ہے۔ SAX پارسر کے برعکس DOM پارسر مکمل XML فائل کو میموری میں لوڈ کرتا ہے اور درختوں کا ڈھانچہ تشکیل دیتا ہے جہاں درخت میں موجود ہر نوڈ XML فائل کے ایک جز کی نمائندگی کرتا ہے۔ ڈوم پارسر کے ذریعہ آپ نوڈس تشکیل دے سکتے ہیں ، نوڈس کو ہٹا سکتے ہیں ، ان کے مندرجات کو تبدیل کرسکتے ہیں اور نوڈ درجہ بندی کو عبور کرسکتے ہیں۔ XML فائلوں کے ساتھ کام کرتے ہوئے DOM زیادہ سے زیادہ لچک فراہم کرتا ہے لیکن یہ بڑی XML فائلوں کی صورت میں ممکنہ طور پر بڑی میموری کے زیر اثر اور اہم پروسیسر کی ضروریات کے ساتھ آتا ہے۔

اسٹیکس پارسر - اسٹیکس XML کیلئے اسٹریمنگ API کا مخفف ہے۔ جب آپ کی ایپلی کیشن کی میموری حدود ہوتی ہے تو اسٹریم پر مبنی پارسر بہت مفید ہوتا ہے۔ مثال کے طور پر ، ایک سیل فون جاوا مائیکرو ایڈیشن چل رہا ہے۔ اسی طرح ، اگر آپ کی درخواست کو بیک وقت متعدد درخواستوں پر کارروائی کرنے کی ضرورت ہے ، مثال کے طور پر ایک درخواست سرور ، اسٹیکس پارسر استعمال کیا جانا چاہئے۔

سلسلہ پر مبنی تجزیہ کو مزید درجہ بندی کی جاسکتی ہے:

پارسنگ ھیںچو - پل پارسنگ میں ، کلائنٹ کی ایپلی کیشن ایک XML پارسنگ لائبریری کے طریقوں کے لئے مطالبہ کرتی ہے جب اسے XML انفوسیٹ کے ساتھ بات چیت کرنے کی ضرورت ہوتی ہے۔ دوسرے الفاظ میں ، مؤکل کو صرف اس وقت XML ڈیٹا ملتا ہے جب وہ واضح طور پر اس کے لئے مانگے۔



پارشنگ کو دبائیں - پش پارسنگ میں ، یہ XML پارسر ہے جو XML ڈیٹا کو مؤکل کے پاس دھکیل دیتا ہے ، جب اس میں XML infoset میں عناصر کا سامنا ہوتا ہے۔ دوسرے لفظوں میں ، تجزیہ کار اس کو استعمال کرنے کے لئے تیار ہے یا نہیں اس سے قطع نظر ڈیٹا کو اطلاق پر بھیجتا ہے۔

سیکس ، ڈوم اور اسٹیکس پارسر کے موازنہ:

نیچے دیئے گئے جدول میں SAX ، DOM اور StAX تجزیہ کار کی خصوصیات کا خلاصہ کیا گیا ہے

Java_bloge_2

اب جب ہم مختلف تجزیہ کاروں کے بارے میں جانتے ہیں ، آئیے SAX پارسر کا استعمال کرتے ہوئے XML فائل کو تجزیہ کرنے کا طریقہ دیکھیں

XML فائل
ذیل میں XML فائل ہے جسے ہم جاوا آبجیکٹس کی تجزیہ اور تعمیر کرنے جارہے ہیں

بورن شناخت ، ڈگ لیمان ، میٹ ڈیمن ، فرانکا پوٹینٹ 2002 ، بورن کی بالادستی پال گرین گراس 108 میٹ ڈیمون ، فرانکا پوٹینٹ ، جون ایلن 2004 ، بورن الٹی میٹم پال گرین گراس 115 میٹ ڈیمون ، ایڈگر ریمیرز ، جان آلن 2007 ، بورن لیگیسی ٹونی گلروی 135 جریمی رینر ، ریچل ویز ، ایڈورڈ نورٹن 2012

پروجیکٹ کی ساخت
ایکلیپس IDE میں پراجیکٹ ڈھانچے کا اسکرین شاٹ یہ ہے

یہاں ڈی وی ڈی کلاس ہے جو مووی آبجیکٹ کی ایک فہرست رکھتی ہے

پیکیج co.edureka.parsers.sax درآمد java.util.List عوامی کلاس ڈی وی ڈی {نجی اسٹرنگ کا نام نجی فہرست فلمیں عوامی سٹرنگ getName () {واپسی کا نام} عوامی باطل سیٹ نام (سٹرنگ کا نام) {this.name = name} عوامی فہرست getMovies () {واپسی موویز} عوامی باطل سیٹ مووی (فلموں کی فہرست) {this.movies = فلمیں}

مووی آبجیکٹ میں نام ، ہدایتکار ، فلم کا رن ٹائم (مدت) ، ریلیز ہونے والا سال اور مووی کاسٹ جیسی خصوصیات ہیں

پیکیج co.edureka.parsers.sax پبلک کلاس مووی {نجی اسٹرنگ کا نام نجی اسٹرنگ ڈائریکٹرز نجی انٹر رن ٹائم نجی انٹر جاری نجی اسٹرنگ کاسٹ پبلک اسٹرنگ getName () {واپسی کا نام} عوامی باطل سیٹ نام (سٹرنگ کا نام) {this.name = name} پبلک اسٹرنگ گیٹ ڈائرکٹر () direct ریٹرن ڈائریکٹرز} پبلک باطل سیٹ ڈائرکٹر (سٹرنگ ڈائریکٹرز) {this.directors = ڈائریکٹرز} پبلک INTRRTTT () {واپسی رن ٹائم} پبلک باطل سیٹ رن ٹائم (INT رن ٹائم) {this.runtime = رن ٹائم} پبلک انٹ گیٹ ریلڈ ( ) {واپسی جاری} پبلک باطل سیٹ ریلیڈڈ (انٹریٹ ریلیز) lease this.released = released St پبلک اسٹرنگ گیٹ کاسٹ () {ریٹرن کاسٹ} پبلک باطل سیٹ کاسٹ (سٹرنگ کاسٹ) {this.cast = کاسٹ} @ آوررائڈ پبلک اسٹرنگ ٹو سٹرنگ () { 'مووی [نام =' + نام + '، ڈائریکٹرز =' + ڈائریکٹرز + '، رن ٹائم =' + رن ٹائم + '، ریلیز =' + ریلیز + '، کاسٹ =' + کاسٹ + ']' '} return

SAX ہینڈلر کا نفاذ:

ہم org.xML.sax.helpers میں توسیع کرنے جا رہے ہیں۔ ڈیفالٹ ہینڈلر کلاس جو بہت سے کال بیک طریقوں کو فراہم کرتی ہے اور درج ذیل طریقوں کو اوور رائڈ کرے گی۔

شروع (عنصر) - جب ٹیگ شروع ہونے کا سامنا کرنا پڑتا ہے تو یہ طریقہ کار طلب ہوتا ہے

اینڈ ایلیمینٹ () - جب کسی ٹیگ کے اختتام کا سامنا کرنا پڑتا ہے تو یہ طریقہ کار طلب ہوتا ہے

حروف () - جب کچھ ٹیکسٹ ڈیٹا کا سامنا کرنا پڑتا ہے تو یہ طریقہ کار طلب ہوتا ہے

نوٹ: اور بھی بہت سارے کال بیک بیک طریقے ہیں جیسے اسٹارٹ ڈوکیومنٹ () ، اینڈ ڈوکیومنٹ () وغیرہ جو ضرورت پڑنے پر اوور ررائڈ ہوسکتے ہیں۔

پیکیج co.edureka.parsers.sax درآمد java.util.ArrayList درآمد java.util.List درآمد org.xML.sax.Atributes درآمد org.xML.sax.helpers.DefaultHandler عوامی کلاس SAXHandler ڈیفالٹ ہینڈلر {DVD ڈی وی ڈی = نئی DVD ( ) listmovieList = new ArrayList () مووی مووی = null اسٹرنگ کا مواد = null عوامی باطل startElement (سٹرنگ کا نام اسپیسوری ، اسٹرنگ qame ، اوصاف) {اگر (qname.equals ('dvd')) ring سٹرنگ dvdName = خصوصیات ('نام') dvd.setName (dvdName)} دوسری صورت میں اگر (qname.equals ('فلم')) {فلم = نئی مووی ()}} عوامی باطل خاتمہ (سٹرنگ नेम اسپیسوری ، اسٹرنگ لوکل نیم ، سٹرنگ Qname) {سوئچ (کینیوم) ) {کیس 'مووی': مووی لسٹ ڈاٹ ای ڈی ڈی (مووی) بریک کیس 'نام': فلم.setName (مواد) توڑ کیس 'ہدایت کار': فلم.سیٹ ڈائرکٹرس (مواد) توڑ کیس 'جاری': فلم.سیٹ ریلیزڈ (Integer.parseInt) (مواد)) بریک کیس 'رن ٹائم': مووی.سیٹ رون ٹائم (انٹیجر ڈاٹ پی پارسی آئینٹ (مواد)) بریک کیس 'کاسٹ': مووی.سیٹ کاسٹ (مواد) بریک کیس 'ڈی وی ڈی': ڈی وی ڈی ۔سیٹ موویس (مووی لسٹ) بریک}} پبلک باطل چرا سینٹر (چار [] CH ، INT اسٹارٹ ، انٹ لمبائی) {مواد = نیا اسٹرنگ (CH ، اسٹارٹ ، لمبائی)} پبلک ڈی وی ڈی getDVD () {ڈی وی ڈی ریٹرن}

SAX ہینڈلر کی جانچ ہو رہی ہے
اب ہم اپنے SAXHandler کی جانچ کرتے ہیں۔ ذیل میں SAXTest ٹیسٹ کلاس ہے جہاں ہم پہلے SAXParserFactory سے SAXParser کی مثال حاصل کرتے ہیں اور پارس طریقہ کو کال کرتے ہیں جس میں دو دلائل ہوتے ہیں: ایک فائل اور ایک ہینڈلر مثال۔

پیکیج co.edureka.parsers.sax درآمد java.io.IOException درآمد java.nio.file.Pat درآمد java.nio.file.Paths درآمد java.util.List درآمد javax.xML.parsers.ParserConfigrationException درآمد javax.xML.parsers .SAXParser درآمد javax.xML.parsers.SAXParserFactory درآمد org.xML.sax.SAXException عوامی کلاس SAXTest {عوامی جامد باطل اہم (سٹرنگ [] آرگس) نے پارسر کانفرگریشن ایگریشن ، سیکس ایکسپرسیشن ، سیکس پارسیٹر (فیکس ایکسپرسیٹر) (ایکسپرسیپرسیٹریسیسیٹر فیکس) (ایکسپرسیپیرسیسیٹر فیکٹری)۔ parserFactor.newSAXParser () SAXHandler ہینڈلر = نیا SAXHandler () راستہ = Paths.get ('src / وسائل'، 'movies.xML') parser.parse (path.toFile ()، ہینڈلر) DVD dvd = handler.getDVD ( ) موویز کی فہرست = ڈی وی ڈی۔ گیٹ موویس () سسٹم آؤٹ.پریٹلن ('ڈی وی ڈی نام:' + ڈی وی ڈی ڈاٹ نیٹ ()) برائے (مووی مووی: فلمیں). System.out.println (فلم)}}}

SAXTest کلاس کو پھانسی دینے پر آپ کو نیچے کی پیداوار مل جائے گی۔

نوٹ : اگر آپ X.MLML سے مختلف ڈھانچے کے ساتھ XML فائل کی تجزیہ کرنے کی کوشش کر رہے ہیں ، تو طریقوں میں موجود کوڈ کو عنصر () اور endElement () کو تبدیل کرنے کی ضرورت ہے۔

اگر آپ کوڈ کو آزمانے میں دلچسپی رکھتے ہیں تو خود کوڈ ڈاؤن لوڈ کریں
[بٹن لیڈز form_title = 'ڈاؤن لوڈ کوڈ' redirect_url = https: //edureka.wistia.com/medias/st5gg7rp15 کورس_id = 44 بٹن_سٹکس = 'ڈاؤن لوڈ کوڈ']

ہمارے لئے ایک سوال ہے؟ برائے کرم اس کا تذکرہ سیکشن میں ذکر کریں اور ہم آپ کو واپس ملیں گے۔

متعلقہ اشاعت:

جاوا میں ایک طاقت کے لئے ایک تعداد میں اضافہ