XML namespace problems with IBM JDK(xml在使用ibm jdk時解釋錯誤)
問題描述:
jdom/dom4j在解釋xml時,用的是ibm的jre 1.4.1時,如果xml檔案中有xmlns:udm時,就會在將string input stream轉成document時出現:java.lang.IllegalStateException: can't declare any more prefixes in this context錯誤,請教各位大蝦這問題怎麼解決?,
xml檔案中包含一個這樣的元素:
異常詳細資訊如下 :
Root cause: java.lang.IllegalStateException: can't declare any more prefixes in this context
at org.apache.crimson.parser.Parser2.parseInternal(Parser2.java:691)
at org.apache.crimson.parser.Parser2.parse(Parser2.java:337)
at org.apache.crimson.parser.XMLReaderImpl.parse(XMLReaderImpl.java:448)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:287)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:583)
原因分析:
是由於xml parser: Crimson不能解釋帶有類似於xmlns:xsi這樣的屬性.要用Xerces才行,但是IBM的jre在預設情況下尋找Crimson作為parser解決辦法是透過在程式中設定jre的xml parser為Xerces,同時將Xerces的jar包加入到classpath中,一共有三個包:xalan.jar,xercesImpl.jar,xml-apis.jar
從上可以下載.
jre的xml parser設定:是jrelib下的一個叫jaxp.properties檔案,最後有三行是關於指定 xml parser的,將註釋去掉,或者在程式中加入以下語句也可以:
System.setProperty("javax.xml.parsers.DocumentBuilderFactory","org.apache.xerces.jaxp.DocumentBuilderFactoryImpl");
System.setProperty("javax.xml.parsers.SAXParserFactory","org.apache.xerces.jaxp.SAXParserFactoryImpl");
如下連結中的文章解釋得非常具體:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/106285/viewspace-809162/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 在IBM Aix下netca時出現錯誤IBMAI
- XML DOM 解析器錯誤概述XML
- Dom4j 讀 xml 時,遇到 xml 無效字元,報錯:An invalid XML characterXML字元
- 部分JDK版本的釋出時間JDK
- namespace對axis解析xml請求的影響namespaceXML
- 下載IBM的PowerPC相容的J2SE http://www.ibm.com/developerworks/java/jdk/index.htmlIBMRPCHTTPDeveloperJavaJDKIndexHTML
- 打成Jar包後執行報錯 Unable to locate Spring NamespaceHandler for XML schema namespaceJARSpringnamespaceXML
- 什麼時候在EJB系統中使用XML (轉)XML
- 8u111-jdk-alpine在java開發中的NullPointerException錯誤解決方案JDKJavaNullException
- Java - XML字元支援報錯An invalid XML characterJavaXML字元
- 在unity3D中使用xmlUnity3DXML
- JDK的版本不一樣,對xml的解析器也不一樣.JDKXML
- xml中有特殊字元,導致解析時出錯XML字元
- eclipse中:The type java.lang.object cannot be resolved錯誤(jdk配置錯誤)EclipseJavaObjectJDK
- 使用services.xml檔案釋出WebServiceXMLWeb
- eclipse中使用axis, 的jdk5+以上enum的衝突錯誤EclipseJDK
- jetty 部署java web工程;報java.err.no jdk錯誤JettyJavaWebJDK
- 使用 XML 時儘量避免使用的技術XML
- JDK 18 / Java 18 正式釋出:九項 JDK 增強JDKJava
- 解決建立帶有NameSpace的XML檔案出現空白xmlns的問題namespaceXML
- 解決Eclipse裡的Maven工程pom.xml檔案報:web.xml is missing and <failOnMissingWebXml> is set to true錯誤EclipseMavenXMLWebAI
- 執行hadoop fs -ls時出現錯誤RuntimeException: core-site.xml not foundHadoopExceptionXML
- C# WebService返回引數為DataTable報錯“XML文件有錯誤”C#WebXML
- rapidxml讀取包含中文路徑的xml解析錯誤的解決方法APIXML
- J2SE - 在BAT中指定臨時使用的JDK環境BATJDK
- 在Spring中使用JDK定時器實現排程任務SpringJDK定時器
- 使用了jdk8後,tomcat下的context.xml裡配置的資料庫要使用dbcp2JDKTomcatContextXML資料庫
- 64bit jdk jni 依賴庫不存在錯誤JDK
- 在 IBM WebSphere Portal 中整合 IBM Lotus Quickr 協作功能IBMWebUI
- C# 讀 xml註釋C#XML
- JDK6.0的新特性之二:使用JAXB2來實現物件與XML之間的對映JDK物件XML
- 火狐使用阿里雲OOS上傳圖片報錯:“XML 解析錯誤:找不到根元素”阿里XML
- 應用SQLServer For XML 生成XML避免在C# 拼字串SQLServerXMLC#字串
- 使用jdom解析XMLXML
- 使用XmlWriter寫XmlXML
- namespace mismatch require錯誤處理方法namespaceUI
- 連線IBM websphere MQ原因碼報2035的錯誤解決辦法IBMWebMQ
- 在 IBM WebSphere Portal V6.1 中整合 IBM OmniFind 搜尋IBMWebNifi