java.net.MalformedURLException: 无协议 [英] java.net.MalformedURLException: no protocol

查看:20
本文介绍了java.net.MalformedURLException: 无协议的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我收到 Java 异常,例如:

I am getting Java exception like:

java.net.MalformedURLException: no protocol

我的程序正在尝试使用以下方法解析 XML 字符串:

My program is trying to parse an XML string by using:

Document dom;
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
dom = db.parse(xml);

XML 字符串包含:

String xml = "<?xml version="1.0" encoding="utf-8"?>"+
    "   <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">"+
    "       <s:Header>"+
    "           <ActivityId CorrelationId="15424263-3c01-4709-bec3-740d1ab15a38" xmlns="http://schemas.microsoft.com/2004/09/ServiceModel/Diagnostics">50d69ff9-8cf3-4c20-afe5-63a9047348ad</ActivityId>"+
    "           <clalLog_CorrelationId xmlns="http://clalbit.co.il/clallog">eb791540-ad6d-48a3-914d-d74f57d88179</clalLog_CorrelationId>"+
    "       </s:Header>"+
    "       <s:Body>"+
    "           <ValidatePwdAndIPResponse xmlns="http://tempuri.org/">"+
    "           <ValidatePwdAndIPResult xmlns:a="http://schemas.datacontract.org/2004/07/ClalBit.ClalnetMediator.Contracts" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">"+
    "           <a:ErrorMessage>Valid User</a:ErrorMessage>"+
    "           <a:FullErrorMessage i:nil="true" />"+
    "           <a:IsSuccess>true</a:IsSuccess>"+
    "           <a:SecurityToken>999993_310661843</a:SecurityToken>"+
    "           </ValidatePwdAndIPResult>"+
    "           </ValidatePwdAndIPResponse>"+
    "       </s:Body>
"+
    "   </s:Envelope>
";

有关导致此错误的原因的任何建议?

Any suggestions about what is causing this error?

推荐答案

文档可以帮助您:http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/parsers/DocumentBuilder.html

方法 DocumentBuilder.parse(String) 接受一个 URI 并尝试打开它.如果你想直接给内容,你必须给它一个InputStreamReader,例如一个StringReader.... 欢迎来到 Java 标准级别的间接访问!

The method DocumentBuilder.parse(String) takes a URI and tries to open it. If you want to directly give the content, you have to give it an InputStream or Reader, for example a StringReader. ... Welcome to the Java standard levels of indirections !

基本上:

DocumentBuilder db = ...;
String xml = ...;
db.parse(new InputSource(new StringReader(xml)));

请注意,如果您从文件中读取 XML,您可以直接将 File 对象提供给 DocumentBuilder.parse() .

Note that if you read your XML from a file, you can directly give the File object to DocumentBuilder.parse() .

顺便提一下,这是您在 Java 中会经常遇到的一种模式.通常,大多数 API 使用 Streams 多于使用 Strings.使用 Streams 意味着可能不必同时将所有内容加载到内存中,这可能是个好主意!

As a side note, this is a pattern you will encounter a lot in Java. Usually, most API work with Streams more than with Strings. Using Streams means that potentially not all the content has to be loaded in memory at the same time, which can be a great idea !

这篇关于java.net.MalformedURLException: 无协议的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆