2015-10-21 25 views
0

當試圖解析XML字符串時,我得到了格式錯誤的URL異常。沒有協議格式不正確的URL嘗試解析XML字符串時拋出異常

這裏是堆棧跟蹤:

java.net.MalformedURLException: no protocol: <explanation> 
<NodeExplanations> 
    <IDAfterSkipProcessing>/Temporary/isMfs</IDAfterSkipProcessing> 
    <NodeExplanation> 
     <ID>/Temporary/isMfs</ID> 
     <SkippedToIDForExplanationData>/Temporary/isMfs</SkippedToIDForExplanationData> 
     <Value>false</Value> 
     <Gist>Equals</Gist> 
     <Scenario>NOT_EQUAL</Scenario> 
     <Title>IsMfs</Title> 
     <Phrase> 
      <Text>isMfs</Text> 
     </Phrase> 
     <Question> 
      <Text>isMfs</Text> 
     </Question> 
     <ExplanationText> 
      <Text>We can't get any more details on </Text> 
      <NodeName> 
       <Text>isMfs</Text> 
      </NodeName> 
      <Text> right now.</Text> 
     </ExplanationText> 
     <InputNodes> 
      <InputNodeEntry> 
       <ID>/Return/ReturnData/IRS1040/IndividualReturnFilingStatusCd</ID> 
       <Role>Value</Role> 
       <Value>2</Value> 
       <Type>CALCULATED_NODE</Type> 
       <HasSubExplanations>false</HasSubExplanations> 
      </InputNodeEntry> 
      <InputNodeEntry> 
       <ID>/Constants/IRS1040/FilingStatus/MarriedFilingSeparatelyCd</ID> 
       <Role>Value</Role> 
       <Value>3</Value> 
       <Type>CONSTANT_NODE</Type> 
       <HasSubExplanations>false</HasSubExplanations> 
      </InputNodeEntry> 
     </InputNodes> 
     <Children> 
      <ID>/Return/ReturnData/IRS1040/IndividualReturnFilingStatusCd</ID> 
     </Children> 
    </NodeExplanation> 
</NodeExplanations> 
</explanation> 

    at java.net.URL.<init>(URL.java:585) 
    at java.net.URL.<init>(URL.java:482) 
    at java.net.URL.<init>(URL.java:431) 
    at org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown Source) 
    at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown Source) 
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) 
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) 
    at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) 
    at org.apache.xerces.parsers.DOMParser.parse(Unknown Source) 
    at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source) 
    at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:177) 

我不知道爲什麼,在XML肯定是有效的,而不是畸形?

這裏是一個正在做解析的代碼:

static Document getDocument(String xml) throws FileNotFoundException { 

    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
    DocumentBuilder db; 
    Document doc = null; 

    try { 
     db = dbf.newDocumentBuilder(); 
     doc = db.parse(xml); 
     doc.getDocumentElement().normalize(); 
    } 
    catch (ParserConfigurationException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } catch (SAXException e) { 
     e.printStackTrace(); 
    } 
    return doc; 
} 

是什麼原因造成這一點,我怎麼能解決這個問題?任何幫助或援助將不勝感激,謝謝。

+1

檢查corrosponding爲您發佈..它缺少XML中的標籤。 –

+0

它在第一行,它說:「java.net.MalformedURLException:沒有協議:」 – mosawi

+0

我認爲問題是類DocumentBuilder的解析方法在xml中採取的方式 – mosawi

回答

0

找出問題實際上是解析方法。

基於此:http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/parsers/DocumentBuilder.html

根據文檔,該方法解析(字符串URI),分析給定URI的內容作爲一個XML文檔,並返回一個新的DOM文檔對象。

解決方案將在要讀取它作爲一個字節流

db.parse(新的InputSource(新ByteArrayInputStream進行(xml.getBytes( 「UTF-8」))));

相關問題