2016-12-15 117 views
-1

我已经尝试了所有不同类型的组合,但我只是不明白它想从我:为什么我不断收到“java.net.MalformedURLException:无协议”

java.net.MalformedURLException: no protocol: <?xml version="1.0" encoding="UTF-8" standalone="yes"?><ds><ds>... 
    at java.net.URL.<init>(URL.java:593) 
    at java.net.URL.<init>(URL.java:490) 
    at java.net.URL.<init>(URL.java:439) 
    at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:620) 
    at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:148) 
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:805) 
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:770) 
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141) 
    at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:243) 
    at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:339) 
    at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:177) 

我已经看了其他问题,但我不知道我的XML有什么问题。

这是一个完整的XML(有一些纯文本删除):

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<ds> 
    <ds> 
     <cue>ABGB : §§ 786 , 810 , 812 </cue>Die Kosten ... <cue>Anmerkung : </cue> 
     ... <cue>Bestätigung von </cue>7 
     <Relation bewertung="1">Ob 56/10a </Relation>= Zak 
     <Relation bewertung="1">2010/773 , 440 </Relation>. 
    </ds> 
</ds> 

的生产代码:

DocumentBuilderFactory icFactory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder icBuilder; 

Document parse = null; 

try { 
    icBuilder = icFactory.newDocumentBuilder();    
    parse = icBuilder.parse(xmlString); 
} catch (ParserConfigurationException e) { 
    e.printStackTrace(); 
} catch (SAXException e) { 
    e.printStackTrace(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 
+1

你能分享代码吗? – Mureinik

+3

,因为您的xml **不是** [URL](https://docs.oracle.com/javase/8/docs/api/java/net/URL.html) – 2016-12-15 15:42:08

+1

您无法创建URL对象从一个XML字符串 - 需要是一个实际的URL –

回答

3

你传递一个StringicBuilder.parse(xmlString),所以你实际上是在调用DocumentBuilder.parse(String uri)

该方法需要一个URI,并将尝试解析它,同时将它传递给一些XML数据。

+2

你为什么要尝试*调用它'parseUri()',我说得对吗? – displayname

4

parse(String)方法将uri指向XML文档,而不是其内容。

为了解析内容,您必须构建您自己的InputSource。例如:

parse = icBuilder.parse(new InputSource(new StringReader(xmlString))); 
相关问题