এক্সপ্যাথ ব্যবহার করে আমি কীভাবে কোনও গভীরতার শিশু উপাদান নির্বাচন করব?


105

ধরুন আমার কাছে এটি রয়েছে (সরলীকৃত):

<form id="myform">
    <!-- some input fields -->
    <input type="submit" value="proceed"/>
</form>

তারপরে আমি এক্সপথ দ্বারা জমা বোতামটি নির্বাচন করতে পারি //form[@id='myform']/input[@type='submit']। দুর্দান্ত

তবে, আমার টেমপ্লেটগুলি পরিবর্তিত হতে পারে এবং সাবমিট বাটনটি যে গভীরতার সাথে রয়েছে তার গভীরতায় আমি নমনীয় হতে চাই। এটি কোনও টেবিলে রাখা হতে পারে:

<form id="myform">
    <!-- some input fields -->
    <table><tr><td>
           <input type="submit" value="proceed"/>
    </td></tr></table>
</form>

আমি জানি যে আমি নাতি-নাতনিদের উপাদানগুলি নির্বাচন করতে পারি, তবে আমি কোনও গ্র্যান্ড-গ্র্যান্ড-গ্র্যান্ড-গ্রেট-বাছাই করতে পারি না। যেমন:

  • //form[@id='myform']/*/input[@type='submit'] কেবল গ্র্যান্ড-বাচ্চাদের বাছাই করে, আরও গভীরতা নেই।
  • //form[@id='myform']/*/*/input[@type='submit'] কেবল গ্র্যান্ড-গ্র্যান্ড-বাচ্চাদের বাছাই করে, আরও বা কম গভীরতা নেই।
  • //form[@id='myform']/**/input[@type='submit'] বৈধ নয়.

সুতরাং, আমি কীভাবে উপাদান আইডি ব্যবহার না করে নির্ভরযোগ্যভাবে এই জমা বোতামটি নির্বাচন করব?

উত্তর:


164

আপনি বেশিরভাগ ওখানেই থাকেন. সহজভাবে ব্যবহার করুন:

//form[@id='myform']//input[@type='submit']

//শর্টকাট এছাড়াও একটি অভিব্যক্তি ভিতরে ব্যবহার করা যাবে।


সি # এই স্বরলিপিটি বুঝতে পারে বলে মনে হচ্ছে না। //form//inputসি # তে বাতিল হয়ে যায় যখন ক্রোম একই xpath ব্যবহার করে 35 টি ইনপুট খুঁজে পেতে পারে
অ্যাকিলিস

4
আমার শেষ মন্তব্যটি এখানে আলোচনা করা হয়েছে: স্ট্যাকওভারফ্লো.com
অ্যাকিলিস

14

আপনি যদি এক্সএমএল ডকুমেন্ট এবং এক্সএমএল নোড ব্যবহার করেন।

বলুন:

XmlNode f = root.SelectSingleNode("//form[@id='myform']");

ব্যবহার:

XmlNode s = f.SelectSingleNode(".//input[@type='submit']");

এটি আপনি যে সরঞ্জামটি ব্যবহার করেন তার উপর নির্ভর করে। কিন্তু .// কোনও রেফারেন্স নোড থেকে যে কোনও শিশু, যে কোনও গভীরতা নির্বাচন করবে।


পূর্বে নিষ্ক্রিয় একটি নির্দিষ্ট এক্সএমএল নোডে সিলেক্টসিংলনোড কমান্ড ব্যবহার করে পাওয়ারশেলের মধ্যে ভাল কাজ করে।
Gizmo3399


-3

এছাড়াও, আপনি এটি সিএসএস নির্বাচকদের সাথে করতে পারেন:

form#myform input[type='submit']

সিএসএস ইলেক্টরের উপাদানগুলির মধ্যে স্পেসের অর্থ ইনপুট অনুসন্ধান করা [টাইপ = 'সাবমিট করুন'] যা প্যারেন্ট ফর্মের কোনও গভীরতায় উপাদানগুলি # মাইফর্ম উপাদান

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.