استخراج قيم XML بمسار XPath
اختبر مسار XPath على ملفك قبل استخدامه في الكود أو في أداة كشط أو استيراد.
جارٍ تحميل الأداة…
المعالجة والخصوصية: تُحسب النتيجة داخل متصفحك ولا تُرسل بياناتك إلى أي خادم.
طريقة الاستخدام
- أدخل نص XML ومسار XPath.
- تظهر النتيجة فورًا وتتحدّث مع كل تعديل.
- انسخ النتيجة، أو انسخ رابطًا يحفظ القيم نفسها لمشاركتها.
طريقة الحساب
يدعم جزءا من XPath 1.0: / للأبناء المباشرين و// لكل الأحفاد، واسم العنصر أو *، والشروط [n] و[last()] و[@attr] و[@attr="v"] و[child="v"]، وفي آخر المسار @attr أو @* أو text(). قيمة العنصر هي نصه الكامل مع اختصار المسافات. الشرط [n] يُطبق على أبناء كل أب كما في XPath.
مثال
المدخلات: مسار XPath = /catalog/book/title. النتيجة: القيم المطابقة: مقدمة ابن خلدون Arabian Sands، عدد النتائج: 2.
<?xml version="1.0" encoding="UTF-8"?>
<catalog>
<book id="1" lang="ar">
<title>مقدمة ابن خلدون</title>
<author>ابن خلدون</author>
<price>45</price>
</book>
<book id="2" lang="en">
<title>Arabian Sands</title>
<author>Wilfred Thesiger</author>
<price>60</price>
</book>
</catalog>مقدمة ابن خلدون Arabian Sands
الحدود والملاحظات
- لا يدعم الدوال مثل contains() وcount() ولا المحاور مثل parent:: ولا عوامل and وor.
- البادئات مثل ns:tag تُطابق حرفيا دون تعريف للنطاقات.
- text() يتجاهل العقد النصية المكونة من مسافات فقط.
أسئلة شائعة عن هذه الأداة
ما الفرق بين / و//؟
الشرطة الواحدة تنزل إلى الأبناء المباشرين فقط، والشرطتان تبحثان في كل المستويات تحت النقطة الحالية.
لماذا يعطي //*[2] أكثر من نتيجة؟
لأن [2] يعني العنصر الثاني بين أبناء كل أب على حدة، فتظهر نتيجة من كل أب له ابنان أو أكثر، وهذا سلوك XPath القياسي.
كيف أقرأ قيمة سمة؟
اختم المسار بالرمز @ واسم السمة، مثل //book/@id لكل قيم id، أو @* لكل السمات.
