2015-10-21 91 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”))));

相关问题