2015-03-26 30 views
6

Ben java-json.jar kullanarak gelen xml çalışılabilir json dönüştürmek için kullanıyorum. Şu anda ben yaşıyorum tek sorun xml <![CDATA[ <p>some html</p> ]]> içerdiğinde bu şu günlüğüne çöküyor olmasıdır:xml için json dönüştürmek android

03-26 16:54:56.176 30119-30119/nl.avrotros.opgelicht E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    Process: nl.avrotros.opgelicht, PID: 30119 
    java.lang.NoSuchMethodError: No virtual method end()Z in class Lorg/json/XMLTokener; or its super classes (declaration of 'org.json.XMLTokener' appears in /data/app/nl.avrotros.opgelicht-1/base.apk) 
      at org.json.XMLTokener.nextCDATA(XMLTokener.java:69) 
      at org.json.XML.parse(XML.java:165) 
      at org.json.XML.parse(XML.java:272) 
      at org.json.XML.parse(XML.java:272) 
      at org.json.XML.parse(XML.java:272) 
      at org.json.XML.parse(XML.java:272) 
      at org.json.XML.parse(XML.java:272) 
      at org.json.XML.toJSONObject(XML.java:369) 
      at nl.avrotros.opgelicht.api.Opgelicht.testxmltojson(Opgelicht.java:84) 
      at nl.avrotros.opgelicht.api.Opgelicht.<init>(Opgelicht.java:78) 
      at nl.avrotros.opgelicht.api.Opgelicht.getInstance(Opgelicht.java:395) 
      at nl.avrotros.opgelicht.activity.MainActivity.onCreate(MainActivity.java:38) 
      at android.app.Activity.performCreate(Activity.java:5953) 
      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1128) 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2267) 
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2388) 
      at android.app.ActivityThread.access$800(ActivityThread.java:148) 
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1292) 
      at android.os.Handler.dispatchMessage(Handler.java:102) 
      at android.os.Looper.loop(Looper.java:135) 
      at android.app.ActivityThread.main(ActivityThread.java:5312) 
      at java.lang.reflect.Method.invoke(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:372) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696) 

i kaldırdığınızda CDATA özellikleri her şey iyi cezası ve gider.

i ayrıştırmak çalışıyorum xml:

<?xml version="1.0" encoding="UTF-8"?> 
<resources> 
    <hits>17</hits> 
    <max-score>14.431101</max-score> 
    <rows>1</rows> 
    <start>0</start> 
    <facets> 
    <category> 
     <facet value="malware" count="4" /> 
     <facet value="offline webshops" count="4" /> 
     <facet value="opgeletopinternet.nl" count="1" /> 
     <facet value="overig" count="1" /> 
     <facet value="spookfacturen" count="1" /> 
     <facet value="valse e-mails" count="5" /> 
     <facet value="webshops" count="2" /> 
    </category> 
    <facet01 /> 
    </facets> 
    <item id="1" score="14.431101"> 
    <created>1</created> 
    <properties> 
     <property> 
     <key>title</key> 
     <value>'Pas op voor studionstore.com!'</value> 
     </property> 
     <property> 
     <key>teasertitle</key> 
     <value>'Pas op voor studionstore.com!'</value> 
     </property> 
     <property> 
     <key>teasertext</key> 
     <value>Opgeletopinternet.nl waarschuwt voor de malafide webwinkel studionstore·com.</value> 
     </property> 
     <property> 
     <key>intro</key> 
     <value>Opgeletopinternet.nl waarschuwt voor de malafide webwinkel studionstore·com.</value> 
     </property> 
     <property> 
     <key>onlinedate</key> 
     <value>2015-03-26T12:56:54.000000Z</value> 
     </property> 
     <property> 
     <key>episodeonair</key> 
     <value>2015-03-26T12:51:00.000000Z</value> 
     </property> 
     <property> 
     <key>text</key> 
     <value><![CDATA[<p>De malafide webwinkel misbruikt de gegevens van een bonafide bedrijf. Bovendien adverteren ze met te goedkope prijzen. ook hier geldt: wat te mooi lijkt om waar te zijn, is vaak niet waar.<br /><br />Zie hieronder de site.<br /><br /></p>]]></value> 
     </property> 
     <property> 
     <key>status</key> 
     <value>online</value> 
     </property> 
     <property> 
     <key>category</key> 
     <value>Webshops</value> 
     </property> 
     <property> 
     <key>programtitle</key> 
     <value>1</value> 
     </property> 
     <property> 
     <key>programid</key> 
     <value>1</value> 
     </property> 
     <property> 
     <key>owner</key> 
     <value>1</value> 
     </property> 
     <property> 
     <key>source</key> 
     <value>typo3</value> 
     </property> 
     <property> 
     <key>collection</key> 
     <value>alerts</value> 
     </property> 
     <property> 
     <key>portal</key> 
     <value>1</value> 
     </property> 
     <property> 
     <key>type</key> 
     <value>article</value> 
     </property> 
     <property> 
     <key>contenttype</key> 
     <value>article</value> 
     </property> 
     <property> 
     <key>origintype</key> 
     <value>xml</value> 
     </property> 
     <property> 
     <key>resized</key> 
     <value>true</value> 
     </property> 
     <property> 
     <key>converted</key> 
     <value>true</value> 
     </property> 
     <property> 
     <key>image</key> 
     <value> 
      <image default="true"> 
      <imageUrl>http://staticextern.avrotros.nl/images/cc4/OP_tx_news_studionstore.jpg</imageUrl> 
      </image> 
     </value> 
     </property> 
    </properties> 
    <updated>2015-03-26T13:09:28.650Z</updated> 
    </item> 
</resources> 

kimse sorunun ne olduğunu biliyor mu?

i aslında xml ayrıştırmak için aşağıdaki kullanıyorum:

return XML.toJSONObject(xmlString).toString();

+0

JSON kitaplığındaki bir hataya benziyor. En son sürümle yeniden üretebilirseniz, hata izleyicilerine en az bir örnek göndermenizi öneririz. – Heinzi

+0

Şimdi araştırıyor. Umarım hiç kimse bir sorun göndermedi ve biz onu özledik. – stleary

cevap

0

Geç olduğunu biliyorum, ama sadece işe yaramak istedim, işte burada. Unutmayın, bu sadece hızlı bir düzeltme ve en iyi uygulama değildir.

  1. İndir Github-Repo tüm dosyaları: https://github.com/stleary/JSON-java
  2. Açık XMLTokener.java ve hat 69, 70, 71.
  3. İşiniz bitti dışarı yorum. Unutmayın, CDATA kapalı değilse, hiçbir hata atılmayacaktır, bu en iyi yol değildir, ancak en azından çalışır.
İlgili konular