저는 스칼라와 XML을 실험 해본 결과 XML.load (또는 loadString)로 만든 XML 태그와 리터럴로 쓰는 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
유형이 동일 여기에 코드입니다. 그러나 평등은 없습니다. 속성의 순서가 변경됩니다. 그것은 원래의 것과 결코 같지 않습니다. litteral의 속성은 사전 순으로 정렬됩니다 (위험 요소 만 해당).
변환 할 때 두 솔루션이 다르게 동작하지 않으면 문제가되지 않습니다. 나는 Daniel C. Sobral로부터 intresting Code를 How to change attribute on Scala XML Element에 가져 왔고 "href"속성의 첫 번째 슬래시를 제거하기 위해 내 자신의 규칙을 썼다. RuleTransformer는 in_xml과 잘 작동하지만 from_str에는 영향을주지 않습니다!
불행히도, 대부분의 프로그램은 XML.load (...)를 통해 XML을 읽어야합니다. 그래서, 나는 붙어있다. 누군가이 주제에 대해 알고 있습니까?
안부,
앙리
이것은 분명히 버그입니다. ... –
스칼라 XML 리터럴은 속성 순서에 대한 문제점을 알고 있습니다. http://lampsvn.epfl.ch/trac/scala/ticket/2735에 대한 찬성 투표를 할 수 있습니다. (실제로 투표에주의를 기울이는 지 모르지만 상처를 입을 수는 없습니다.) – Steve
그들은 투표에주의를 기울이지 않지만 활동 (사람들은 구독하고 의견을 말하기 등)에주의를 기울입니다. 그래도 상처를주지 않습니다. 나는 개인적으로 내가 관심있는 버그를 구독하고 특히 중요하다고 생각하는 것을 upvote한다. –