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

  • Garrett Müller

    Garrett Mül

    26 HAZİRAN 2009
  • Jason Parker

    Jason Parker

    14 Aralık 2009
  • MarinaHD2001

    MarinaHD2001

    7 ŞUBAT 2009