2011-11-06 104 views
1

我有一個SVG文檔,SVG樣式元素具有屬性xml:space =「preserve」。SAXParseException命名空間xml undefined使用Scala

當嘗試使用Scala的這個文件解析,一個例外是線程拋出與堆棧跟蹤 異常「主要」 org.xml.sax.SAXParseException:XML命名空間未定義 在com.dautelle.xml.sax.RealtimeParser .parseError(Unknown Source) at com.dautelle.xml.sax.RealtimeParser.processAttribute(Unknown Source) at com.dautelle.xml.sax.RealtimeParser.parseContent(Unknown Source) at com.dautelle.xml.sax。 RealtimeParser.parse(Unknown Source) at com.dautelle.xml.sax.XMLReaderImpl.parse(Unknown Source) at javax.xml.parsers.SAXParser.parse(SAXParser.java:395) at scala.xml.factory。 XMLLoader $ class.loadXML(XMLLoader.sc ala:40) at scala.xml.XML $ .loadXML(XML.scala:40) at scalaapplication11.Main $ .main(Main.scala:144) at scalaapplication11.Main.main(Main.scala) Java結果:1

這裏的SVG元素 < SVG的xmlns = 「http://www.w3.org/2000/svg」 的xmlns的頂部:jdipNS =「http://jdip.sourceforge.org/jdipNS 「xmlns:xlink =」http://www.w3.org/1999/xlink「color-rendering =」optimizeQuality「contentScriptType =」text/ecmascript「contentStyleType =」text/css「height =」680px「preserveAspectRatio =」xMinYMin 「version =」1.0「viewBox =」0 0 1835 1360「width =」918px「zoomAndPan =」magnify「>

和這裏的風格元素 <風格類型= 「文/ CSS」 XML:空間= 「保存」 > < [CDATA [

/* text */ 
    .titletext {text-anchor:middle;stroke-width:0.3;font-family:sansserif;font-size:12;stroke:black;fill:black;} 
    .provtext {text-anchor:middle;stroke-width:0.3;font-family:sansserif;font-size:12;stroke:black;fill:black;} 
    .labeltext {stroke-width:0.1;stroke:black;fill:black;} 
    .unordered   {fill:red; stroke:black; stroke-width:1;fill-opacity:0.90;} 
    .labeltext 

,我能夠使用Java的DocumentBuilderFactory可以追加的xmlns:jdipNS屬性到文檔的根。但xmlns:xml不會被追加(可能是因爲它是一個標準的命名空間)。我不知道如何讓Scala處理xml命名空間。

回答

2

從表面上看,這看起來像dautelle(Javolution?)XML解析器中的一個嚴重錯誤。我不太瞭解Scala環境,但似乎解析器已經使用標準的Java DocumentBuilderFactory進行了分配,所以您應該可以通過簡單地更改類路徑來切換到不同的XML解析器。

+0

謝謝。我加載了Apache的Xerces實現,並解決了這個問題。 – DetriusXii