سؤال

وأنا أبحث عن وسيلة لتحليل مستند XML / HTML في روبي، الذي يحتوي على ERB علامات أسلوب <% %> مع رمز روبي في الداخل. REXML، والتي بنيت في محلل XML لن تسمح لي أن أفعل ذلك.

وأنا على علم بأنني قد تكون قادرة على مع مكتبة طرف ثالث مثل hpricot، ولكن أود أن تجنب أي الاعتماد على الخارج.

هل هناك طريقة أتمكن من الحصول REXML أن تكون أقل صرامة حول العلامات؟ أو لجعلها تعترف هذه العلامة؟ أي حل آخر؟

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

المحلول

حسنا، شريطة أن كنت تريد رمز روبي الفعلي نفسه، المشكلة ليست مع محلل، ولكن الحقيقة أن XML هو تالف.

وأنا ما زلت على افتراض XML الخاص بك يبدو شيئا من هذا القبيل:

<parent>
    <node>
         <% some code here! %>
    </node>
</parent>

إذا كان هذا هو الحال في الواقع، فإن محتويات عقدة node (هيه) يجب أن يكون في الواقع جزء CDATA. لذلك ينبغي أن تبدو هذه:

<node><![CDATA[
     <% some code here! %>
]]></node>

إذا قمت بذلك، سوف REXML تكون قادرة على تحليل صحيح ملف XML، والعودة محتويات node، والتي سوف <م> تضمين العلامات إرب.

إذا لم يكن لديك السيطرة على جيل من XML، هل يمكن، كحل لسد الفجوة، فقط (على افتراض أن أي عقدة معينة الذي يحتوي ERB <م> فقط يحتوي ERB) القيام ملف بحث واسعة واستبدال لبداية ونهاية كود العلامات، وبشكل مناسب إلحاق / أرفقت العلامات CDATA. هل يمكن بسهولة جعل هذا في اللغة التي تختارها، وهناك الكثير من الأمثلة هنا على SO.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top