2012-12-20 73 views
-1

我的應用程序試圖解析XML,它拋出以下異常,解析XML拋出一個奇怪的無效性格特徵異常

無效的XML字符(Unicode:0×52)在該元素含量發現該文件。

我100%確定XML是有效的。但我仍然不知道爲什麼我會得到這個例外。

任何想法可能是這種異常的原因?

代碼我使用讀取XML文件是:

String policyFile = filename; 
    try { 
     String overRide = System.getProperty("TEST_POLICY_FILE"); 
     if (overRide != null) { 
      policyFile = overRide; 
     } 

     //   URL urlToPolicyFile = new URL(policyFile); 
     //   InputStream is = urlToPolicyFile.openStream(); 
     //InputStream is = getClass().getClassLoader().getResourceAsStream(policyFile); 
     // get XML Parser instance 
     DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
     factory.setIgnoringComments(true); 
     factory.setValidating(false); 
     DocumentBuilder builder = factory.newDocumentBuilder(); 
     builder.setEntityResolver(VacEntityResolver.getInstance()); 
     InputSource inputSource = new InputSource(policyFile); 
     // parse input file 
     Document policyDocument = builder.parse(inputSource); 
     Builder policyBuilder = new Builder(); 

     // load decl-policies file into cache 
     visitDeclarativePolicies(policyDocument, policyBuilder); 
     m_myPolicyCache = policyBuilder.getPolicyCache(); 
    } catch (SAXException e) { 
     throw new InvalidPolicyFileException(policyFile); 
    } catch (ParserConfigurationException e) { 
     throw new InvalidPolicyFileException(policyFile); 
    } catch (IOException e) { 
     throw new InvalidPolicyFileException(policyFile); 
    } 

線,

Document policyDocument = builder.parse(inputSource);

是拋出錯誤

一個有趣的事實之一關於這個問題,它只發生在生產環境中。相同的Xml文件在我的開發環境和測試環境中都不會產生任何問題。抱歉沒有分享這個文件。這是一個文件,我不應該分享。但是同樣的輸入文件在我的開發環境中沒有產生任何問題。

這個問題似乎對我來說很奇怪,因爲它引發'R'字符0x52的異常。

回答

0

通常最好給予更多的輸入(例如發佈一個仍然顯示行爲的輸入的最小化版本),但從您給出的結果來看,可能會出現小寫r與大寫R (這將讓你覺得這是有效的,但緊張的語法檢查器會爲無效將其標記)

[編輯以下問題信息除了]

用於開發嫌疑人/製作不同的是OS的區別。您的機器是Unix還是Production Windows或其他方式?在這些情況下,操作系統創建和讀取文件的方式可能會影響您獲得的內容,並且解析可能會有所不同。

+0

感謝您的回覆。我用更多的信息更新了我的帖子。請看一看。 – user1917893

0

我能想到的,其中「R」是無效字符的唯一情況是,緊跟在「高代理」。但不要讓我們猜測,你需要給我們更多的信息。

根據我的經驗,我會說從「100%確定」你的XML是有效的,當你的解析器告訴你它不是時,不是一個很好的起點來解決問題的底部。

+0

你好凱,我說XML的原因是有效的,相同的XML在開發環境中使用,不會產生任何問題。它僅在生產機器中發生。另外我沒有看到輸入文件中的任何「高代理」。 – user1917893

+0

好吧,既然你不準備分享你的XML,我真的不能評論它有什麼問題。事實上,無論是XML錯誤還是解析器都是錯誤的,而且您還沒有告訴我們XML是什麼或者您正在使用什麼解析器,所以您要求我們進行瘋狂的猜測。 –