为啥我不断收到“java.net.MalformedURLException:无协议”[重复]

Posted

技术标签:

【中文标题】为啥我不断收到“java.net.MalformedURLException:无协议”[重复]【英文标题】:Why do I keep getting "java.net.MalformedURLException: no protocol" [duplicate]为什么我不断收到“java.net.MalformedURLException:无协议”[重复] 【发布时间】:2017-05-01 06:46:12 【问题描述】:

我已经尝试了所有不同类型的组合,但我就是没有从我这里得到它想要的:

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

【问题讨论】:

能否也分享一下代码? 因为你的 xml 不是 URL 您不能从 XML 字符串创建 URL 对象 - 必须是实际的 URL 我投票决定将此问题作为离题结束,因为答案在 URL javadoc 中:docs.oracle.com/javase/8/docs/api/java/net/URL.html 这看起来很清楚,真的。你到底想做什么?! 【参考方案1】:

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

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

parse = icBuilder.parse(new InputSource(new StringReader(xmlString)));

【讨论】:

【参考方案2】:

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

该方法需要一个 URI,并在您向其传递一些 XML 数据时尝试对其进行解析。

【讨论】:

你为什么要尝试称它为parseUri(),对吗? 这是一个解释为什么它不起作用,但它并不建议像 Mureinik 这样的解决方案

以上是关于为啥我不断收到“java.net.MalformedURLException:无协议”[重复]的主要内容,如果未能解决你的问题,请参考以下文章

为啥我不断收到交互失败 (discord.py)

为啥我不断收到“java.net.MalformedURLException:无协议”[重复]

为啥我不断收到这个受诅咒的 SQL*Plus 无效标识符错误?

为啥我不断收到“SVN:工作副本 XXXX 锁定;尝试执行“清理”?

为啥我在地图箭头功能中不断收到未定义的错误?

Wavefront OBJ Parsing - 为啥我不断收到不正确的数据作为输出?