为什么我一直得到" java.net.MalformedURLException:没有协议"

时间:2016-12-15 15:40:34

标签: java xml

我尝试了所有不同类型的组合,但我不能从我那里得到它想要的东西:

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();
}

2 个答案:

答案 0 :(得分:4)

您已将String传递给icBuilder.parse(xmlString),因此您实际上正在调用DocumentBuilder.parse(String uri)

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

答案 1 :(得分:4)

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

要解析内容,您必须构建自己的InputSource。 E.g:

select t1.TQ
from table1 t1 left join
     table3 t3
     on t1.val_cd = t3.val_cd
     table2 t2
     on t1.comp_cd = t2.comp_cd and
        t1.plcy_frm = t2.plcy_frm and
        t1.val_cd = coalesce(t3.Mapped_Val_Cd, t2.val_cd);