Jsonlib kullanılarak JSON'dan XML'e dönüştürülürken geçersiz karakter

Java'da jsonlib kullanarak bir JSON dizesini XML'ye dönüştürmeye çalışıyorum.

    JSONObject json = JSONObject.fromObject(jsonString); 
    XMLSerializer serializer = new XMLSerializer();
    String xml = serializer.write( json );  
    System.out.println(xml);

Benim aldığım hata

    nu.xom.IllegalNameException: 0x24 is not a legal NCName character

Buradaki sorun, JSON'umda geçersiz xml karakterleri olan bazı özelliklere sahip olduğum. Örneğin. "$ T" isimli bir mülküm var. xml etiket adlarında $ izin verilmediğinden, XMLSerializer bu ada sahip bir xml etiketi oluşturmaya çalışırken istisna atar. Serializer tarafından yapılan bu xml biçimlendirilmişlik kontrolünü geçersiz kılmanın herhangi bir yolu var mı?

1
Neden bu kontrolü geçersiz kılmak (ve geçersiz xml oluşturmak) istersiniz?
katma yazar jtahlborn, kaynak
Google REST API'sini kullanmaya çalışıyorum. Web servisini işlettikten sonra bir JSON yanıtı alıyorum. Ağaç yapısında xml görüntüleyen bir ağaç görüntüleyicim var. Bu yüzden bir ağaç olarak görüntülemek için JSON'u XML'e dönüştürmeliyim. Ancak JSON'da "$" geçerli bir özellik adıdır. Google API, "$ t", "gCal $ timesCleaned" vb. Gibi özellik adlarını döndürür. Bu nedenle, XML'ye dönüştürülürken hata alıyorum.
katma yazar Jophin Joseph, kaynak

3 cevap

json.keySet 'i (gerektiğinde yinelemeli olarak) döngü yapabilir ve geçersiz anahtarları geçerli olanlarla değiştirebilirsiniz ( kaldır ve ekle kullanarak).

0
katma

Ben json-lib XMLSerializer için spec bir göz attım ve benim için sürpriz bir anahtar adı geçerli xml adları olmayan bir JSON nesnesini serileştirmek için bir seçenek var gibi görünüyor. Eğer durum buysa, farklı bir kütüphane bulmanız gerekeceğini düşünüyorum.

0
katma

İlk önce kullandığınız dili eklemeyi tavsiye ederim (Java, doğru mu?).

XML etiket adınızı hiçbir şey yapmadan kontrol ettiği yöntemi geçersiz kılabilirsiniz.

0
katma