كيفية إضافة غير هرب اقحام إلى HTML مع Nokogiri::XML::باني
سؤال
أود أن أضيف أشياء مثل النقاط "•" إلى HTML باستخدام XML باني في Nokogiri ، ولكن كل شيء يجري هرب.كيف يمكنني منعه من هرب ؟
أود أن تكون النتيجة:
<span>•</span>
بدلا من:
<span>&#8226;</span>
أنا فقط أفعل هذا:
xml.span {
xml.text "•\ "
}
ما أنا في عداد المفقودين ؟
المحلول
إذا قمت بتعريف
class Nokogiri::XML::Builder
def entity(code)
doc = Nokogiri::XML("<?xml version='1.0'?><root>&##{code};</root>")
insert(doc.root.children.first)
end
end
ثم هذا
builder = Nokogiri::XML::Builder.new do |xml|
xml.span {
xml.text "I can has "
xml.entity 8665
xml.text " entity?"
}
end
puts builder.to_xml
ينتج
<?xml version="1.0"?>
<span>I can has • entity?</span>
PS هذا الحل فقط, نظيف الحل يرجى الرجوع إلى libxml2
الوثائق (Nokogiri بنيت على libxml2) للحصول على مزيد من المساعدة.ولكن حتى هؤلاء الناس أعترف أن التعامل مع الكيانات يمكن أن يكون تماما ..يخطئ ، مرهقة في بعض الأحيان.
نصائح أخرى
وعند الانتهاء من وضع نص عنصر، كنت حقا وضع النص، وليس مصدر HTML. <
و&
ليس لديهم أي معنى خاص في نص عادي.
وهكذا فقط اكتب رصاصة: '•'
. بالطبع شفرة المصدر الخاصة بك وملف XML الخاصة بك وسوف يتعين استخدام نفس الترميز لذلك أن يخرج الحق. إذا كان ملف XML الخاص بك هو UTF-8 ولكن شفرة المصدر الخاصة بك ليست كذلك، وكنت على الارجح الى القول '\xe2\x80\xa2'
وهو تسلسل بايت UTF-8 للحرف رصاصة كسلسلة حرفية.
و(في أحرف غير ASCII-العامة في روبي 1.8 هي صعبة. واجهات القائم بايت لا تنسق جيدا مع العالم XML لجميع النص هو بين يونيكود).