为啥我不断收到“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:无协议”[重复]的主要内容,如果未能解决你的问题,请参考以下文章
为啥我不断收到“java.net.MalformedURLException:无协议”[重复]
为啥我不断收到这个受诅咒的 SQL*Plus 无效标识符错误?