SORU
10 Kasım 2009, Salı


java.net.MalformedURLException: hayır protokolü

Java istisna gibi alıyorum:

java.net.MalformedURLException: no protocol

Benim programı kullanarak XML bir dize ayrıştırmak için çalışıyor:

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

XML dizesini içerir:

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>\n" 
    "   </s:Envelope>\n";

Bu hatanın ne olduğunu hakkında herhangi bir öneriniz var mı?

CEVAP
10 Kasım 2009, Salı


Sana yardımcı olabilecek belgeleri : http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/parsers/DocumentBuilder.html

Yöntemi DocumentBuilder.parse(String) URI alıp açmaya çalışır. Ben doğrudan içerik vermek istiyorsan, InputStream örneğin ByteArrayInputStream vermelisin. ... Java hoş geldiniz indirections standart seviyeleri !

Temel olarak :

DocumentBuilder db = ...;
String xml = ...;
db.parse(new InputSource(new ByteArrayInputStream(xml.getBytes("utf-8"))));

Eğer bir dosyadan XML okursanız, doğrudan DocumentBuilder için Dosya nesnesi verebilirsiniz unutmayın.() ayrıştırmak.

Bir yan not olarak, bu Java çok karşılaşacağınız desen. Genellikle, çoğu API Akışları ile daha fazla Dizeleri ile daha iyi çalışıyor. Kullanarak Akışı potansiyel tüm içeriği harika bir fikir olabilir ki aynı anda bellekte yüklü olması anlamına gelir !

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • jbignacio

    jbignacio

    13 Mart 2006
  • Jonathan Flavell

    Jonathan Fla

    1 HAZİRAN 2006
  • Peyton

    Peyton

    28 Aralık 2008