سؤال

لدي وثيقة XML حيث تحتوي بعض العقد على ملف . باسمهم:

<com.site.blah>
   <id>asdkjasd</id>
   <com.site.testing>
       <name>test</name>
    </com.site.testing>
</com.site.blah>

إذا حاولت @doc.search("/*/id").first.xpath, ، يعود /com.site.blah/id, ، ولكن إذا فعلت ذلك: @doc.search("/com.site.blah/id").first.inspect يعود nil.

أريد أن أكون قادرًا على إجراء استعلام XPath لتحديد الاسم تحت com.site.testing, ، لكنه يستمر في رفض استفساراتي.

أيه أفكار؟

(أنا أستخدم hpricot إذا كان يحدث فرقًا)

هل كانت مفيدة؟

المحلول

مكتبة XPath الخاصة بك مكسورة. اختبار اسم XPath هو QName (http://www.w3.org/tr/xpath/#nt-nametest) ، والتي ، بعد اتباع ثقب الأرنب في EBNF ، تشمل فترات (http://www.w3.org/tr/rec-xml/#nt-namechar). الإبلاغ عن الخطأ للمطورين.

كحل بديل ، لا يوجد أي من آليات الهروب المذكورة في التعليقات جزء من XPath ، ولكن يمكنك محاولة استخدام مسند للتحقق من اسم العنصر ، مثل ذلك:

/*[name(.) = 'com.site.blah']/id
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top