Пространство имен xml SAXParseException не определено с помощью Scala

#java #xml #scala #namespaces

#java #xml #scala #пространства имен

Вопрос:

У меня есть документ SVG, и элемент стиля SVG имеет атрибут xml:space=»сохранить».

При попытке проанализировать этот документ с помощью Scala генерируется исключение с исключением трассировки стека в потоке «main» org.xml.sax.SAXParseException: пространство имен xml не определено в com.dautelle.xml.sax.RealtimeParser.ParseError(неизвестный источник) в com.dautelle.xml.sax.RealtimeParser.processAttribute(неизвестный источник) в com.dautelle.xml.sax. RealtimeParser.parseContent (неизвестный источник) в com.dautelle.xml.sax.RealtimeParser.parse (неизвестный источник) в com.dautelle.xml.sax.XMLReaderImpl.parse (неизвестный источник) в javax.xml.parsers.SAXParser.parse (SAXParser.java:395) в scala.xml.factory.XMLLoader$class.loadXML(XMLLoader.scala:40) в scala.xml.XML $.loadXML(XML.scala:40) в scalaapplication11.Main$.main(Main.scala:144) в 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 » цветопередача =»Оптимизация качества» contentScriptType=»текст / ecmascript» contentStyleType=»текст / css» height =»680px» preserveAspectRatio =»xMinYMin» version = «1.0» viewBox =»0 0 1835 1360″ width =»918px» zoomAndPan=»увеличить»>

а вот элемент стиля <style type=»text/css» xml:space=»preserve»><![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.

Ответ №1:

На первый взгляд это выглядит как серьезная ошибка в dautelle (Javolution?) Анализатор XML. Я не очень хорошо знаю среду Scala, но, похоже, анализатор был выделен с использованием стандартного Java DocumentBuilderFactory, поэтому вы должны иметь возможность переключиться на другой анализатор XML, просто изменив свой путь к классу.

Комментарии:

1. Спасибо. Я загрузил в реализацию Apache Xerces, и это решило проблему.