এক্সপথ: পাঠ্য নোডটি নির্বাচন করুন


150

নিম্নলিখিত এক্সএমএল থাকা:

<node>Text1<subnode/>text2</node>

এক্সপ্যাথের মাধ্যমে আমি প্রথম বা দ্বিতীয় পাঠ নোডটি কীভাবে নির্বাচন করব?

এটার মতো কিছু:

/node/text()[2]

অবশ্যই এটি কাজ করে না কারণ এটি নোডের অভ্যন্তরে প্রতিটি পাঠের মার্জড ফলাফল।


11
আপনি লিখেছেন: /node/text()[2][...] কাজ করে না কারণ এটি নোডের অভ্যন্তরে প্রতিটি পাঠ্যের মার্জড ফলাফল এটি ভুল: এর অর্থ মূল শিকড়ের দ্বিতীয় পাঠ্য নোডের শিশুnodeস্ট্রিং মান (বংশধর টেক্সট নোড সংযুক্তকরণের) হবেstring(/node)

আপনি Xpath ক্যোয়ারী কাজ করা উচিত মানে? ঠিক আছে, আমার ধারণা, তখন আমার অন্য কোথাও সমস্যা আছে। ;) ধন্যবাদ!
কার্নেল

ভাল প্রশ্ন, +1। ব্যাখ্যার জন্য আমার উত্তর এবং একাধিক এক্সপথ এক্সপ্রেশন দেখুন যা সমস্ত বা শীর্ষ উপাদানটির একটি নির্দিষ্ট পাঠ্য-নোডের বাছাই করে।
দিমিত্রে নোভাচাচেভ

উত্তর:


183

নিম্নলিখিত এক্সএমএল থাকা:

<node>Text1<subnode/>text2</node> 

এক্সপ্যাথের মাধ্যমে আমি প্রথম বা দ্বিতীয় পাঠ নোডটি কীভাবে নির্বাচন করব?

ব্যবহার :

/node/text()

এটি এক্সএমএল ডকুমেন্টের শীর্ষ এলিমেন্টের ("নোড" নামযুক্ত) সমস্ত পাঠ্য নোড বাচ্চাদের নির্বাচন করে।

/node/text()[1]

এটি এক্সএমএল ডকুমেন্টের শীর্ষ এলিমেন্টের ("নোড" নামযুক্ত) প্রথম পাঠ্য-নোড শিশু নির্বাচন করে।

/node/text()[2]

এটি এক্সএমএল ডকুমেন্টের শীর্ষ উপাদানটির (দ্বিতীয় নাম "নোড") এর দ্বিতীয় পাঠ্য নোডের বাচ্চাকে নির্বাচন করে।

/node/text()[someInteger]

এটি এক্সএমএল ডকুমেন্টের শীর্ষ উপাদানটির ("নোড" নাম হিসাবে) কিছু ইন্টেজার-থ্রি পাঠ্য নোড বাছাই করে। এটি নিম্নলিখিত এক্সপথ এক্সপ্রেশন সমতুল্য:

/node/text()[position() = someInteger]

@ নাফটুলিজভিকে: এর অর্থ ক্রোম নষ্ট হয়ে গেছে। /node[2]সোর্স এক্সএমএল ডকুমেন্টটি সুসংহত থাকলে অবশ্যই কোনও নোড নির্বাচন করবেন না। নামেও পরিচিত - একটি সুগঠিত এক্সএমএল নথিতে সংজ্ঞা দ্বারা শুধুমাত্র একটি (একক) শীর্ষ উপাদান আছেdocument-element
Dimitre Novatchev

1
এটি কি পিএইচপি-তে কাজ করে? আমি কেবল পাঠ্য নোডগুলি ল্যাপ করার চেষ্টা করছি, এমনকি ট্যাগগুলির সেটগুলির মধ্যেও। সমস্যাটি হ'ল ট্যাগগুলি নির্বিশেষে একসাথে একাধিক পাঠ্য নোডের বিষয়বস্তু ছড়িয়ে দেওয়া। //*[text()]যাইহোক ব্যবহার করা । /html/text()কাজ করে না.
অ্যারন গিলিয়ন

2
অ্যারোনগিলিয়ন, হ্যাঁ, আফাইক পিএইচপি-র সঠিকভাবে কাজ করা এক্সপ্যাথ 1.0 মূল্যায়ন রয়েছে। মনে রাখবেন যে /html/text()নথিতে সমস্ত পাঠ্য নোডগুলি নির্বাচন করে না - কেবলমাত্র টেক্সট নোডগুলি যা শীর্ষ, htmlউপাদানটির শিশু (বংশধর নয়) are আপনি সম্ভবত চান /html//text() । এক্সপথের কিছু জ্ঞান এবং বোঝার জন্য সাধারণত এক্সপথ এক্সপ্রেশনগুলি তৈরি করতে প্রয়োজন।
দিমিত্রে নোভাচাচেভ

ধন্যবাদ। আমি ডাবল-স্ল্যাশ কৌশলটি একটু আগে খুঁজে পেয়েছি!
অ্যারন গিলিয়ন

অ্যারোনগিলিয়ন, আপনাকে স্বাগতম! আপনি এই অনলাইন প্রশিক্ষণ কোর্সের মডিউল 2 এ এক্সপথ
দর্শন / এক্সসার্ট -ফাউন্ডেশনস-

29

আপনার এক্সপথটি কাজ করা উচিত। আমি মার্কএলজিক এবং জোর্বা জ্যাকোয়ারি / এক্সপাথ উভয় ক্ষেত্রেই আপনার এক্সপথ এবং আমার পরীক্ষা করেছি।

দুজনেরই কাজ করা উচিত।

/node/child::text()[1] - should return Text1
/node/child::text()[2] - should return text2


/node/text()[1] - should return Text1
/node/text()[2] - should return text2
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.