मैं स्कैला और एक्सएमएल के साथ प्रयोग कर रहा हूं और मुझे XML.load (या loadString) के साथ बनाए गए XML टैग के बीच व्यवहार में एक अजीब अंतर मिला और इसे शाब्दिक के रूप में लिखना पड़ा।स्कैला XML.loadString बनाम शाब्दिक अभिव्यक्ति
import scala.xml._
// creating a classical link HTML tag
val in_xml = <link type="text/css" href="/css/main.css" rel="stylesheet" xmlns="http://www.w3.org/1999/xhtml"></link>
// The same as a String
val in_str = """<link type="text/css" href="/css/main.css" rel="stylesheet" xmlns="http://www.w3.org/1999/xhtml"></link>"""
// Convert the String into XML
val from_str = XML.loadString(in_str)
println("in_xml : " + in_xml)
println("from_str: "+ from_str)
println("val_xml == from_str: "+ (in_xml == from_str))
println("in_xml.getClass() == from_str.getClass(): " +
(in_xml.getClass() == from_str.getClass()))
और यहाँ, उत्पादन:
in_xml : <link href="/css/main.css" rel="stylesheet" type="text/css" xmlns="http://www.w3.org/1999/xhtml"></link>
from_str: <link rel="stylesheet" href="/css/main.css" type="text/css" xmlns="http://www.w3.org/1999/xhtml"></link>
val_xml == from_str: false
in_xml.getClass() == from_str.getClass(): true
प्रकार एक ही हैं यहाँ कोड है। लेकिन समानता नहीं है। गुणों का क्रम बदलता है। यह मूल के समान कभी नहीं होता है। कड़वाहट के गुण वर्णानुक्रम से क्रमबद्ध हैं (केवल खतरे?)।
यह समस्या नहीं होगी यदि दोनों समाधानों को बदलने की कोशिश करते समय दोनों समाधान अलग-अलग व्यवहार नहीं करते हैं। मैंने How to change attribute on Scala XML Element पर डैनियल सी सोब्राल से कुछ अंतर्निहित कोड उठाया और "href" विशेषता के पहले स्लैश को हटाने के लिए अपना खुद का नियम लिखा। RuleTransformer in_xml के साथ अच्छी तरह से काम करता है, लेकिन इसका कोई प्रभाव नहीं है!
दुर्भाग्यवश, मेरे अधिकांश कार्यक्रमों को XML.load (...) के माध्यम से XML को पढ़ना है। तो, मैं अटक गया हूँ। क्या कोई इस विषय के बारे में जानता है?
सादर,
हेनरी
यह निश्चित रूप से एक बग है। ऐसा नहीं है कि मदद करता है ... –
स्कैला एक्सएमएल अक्षरों को विशेषता आदेश के साथ समस्याएं ज्ञात हैं। आप http://lampsvn.epfl.ch/trac/scala/ticket/2735 को अप-वोट कर सकते हैं। (मुझे नहीं पता कि वे वास्तव में वोटों पर ध्यान देते हैं, लेकिन यह चोट नहीं पहुंचा सकता है।) – Steve
वे वोटों पर ध्यान नहीं देते हैं, हालांकि वे गतिविधि पर ध्यान देते हैं (लोग सदस्यता लेते हैं, टिप्पणी करते हैं आदि)। फिर भी, यह चोट नहीं पहुंचाता है। मैं, व्यक्तिगत रूप से, किसी भी बग की सदस्यता लेता हूं जिसमें मुझे रूचि है, और जो भी मुझे लगता है वह विशेष रूप से महत्वपूर्ण है। –