2011-01-20 2 views
3

Пытаются SAX синтаксического анализаСинтаксический XML с несвязанными префиксами

<foo bar:car="zoo"/> 

Результатов в:

org.dom4j.DocumentException: Error on line 1 of document file:///c:/temp/test.xml : The prefix "bar" for attribute "bar:car" associated with an element type "foo" is not bound. Nested exception: The prefix "bar" for attribute "bar:car" associated with an element type "foo" is not bound. 
     at org.dom4j.io.SAXReader.read(SAXReader.java:482) 
     at org.dom4j.io.SAXReader.read(SAXReader.java:321) 
     at .<init>(<console>:18) 
     at .<clinit>(<console>) 
     at RequestResult$.<init>(<console>:9) 
     at RequestResult$.<clinit>(<console>) 
     at RequestResult$scala_repl_result(<console>) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.ja... 

Как можно обойти, что без изменений XML? (Реальный XML приходит из веб-службы я не имею никакого контроля над)

ответ

-1

Отключить http://xml.org/sax/features/namespaces:

xmlReader.setFeature("http://xml.org/sax/features/namespaces", false); 

Это позволит предотвратить преобразование префиксов пространств имен в URI.

+0

Можете ли вы уточнить? – IttayD

+0

@IttayD Я разработал. –

+0

Это не работает. Я попытался скопировать код из org.dom4j.Document dom4jDoc = DocumentHelper.parseText (текст); и положил reader.setFeature ("http://xml.org/sax/features/namespaces", false); , но результат тот же: org.xml.sax.SAXParseException: префикс «xx» для элемента «xx: service» не связан. \t at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException (Неизвестный источник) Я согласен с тем, что xml должен иметь объявленное пространство имен, но оно не входит в мой контроль, и оно очень короткое. – Uberto

Смежные вопросы