This code should convert xml
to json and i got below error in the first of it.
SAXBuilder
can't read xml
file.
I use JDOM2 library in this code.
Java code:
package com.example.books_xmltojson;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.EditText;
import org.jdom2.Document;
import org.jdom2.input.SAXBuilder;
import java.io.InputStream;
public class MainActivity extends AppCompatActivity {
EditText edittext;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edittext = findViewById(R.id.edittext);
// SAX builder
InputStream input = getResources().openRawResource(R.raw.books);
SAXBuilder builder = new SAXBuilder();
try {
Document doc = builder.build(input);
} catch (Exception e) {
edittext.setText(e.toString());
}
}
}
XML R.raw.books:
// Resources
<catalog>
<book>
<title>XML Developer's Guide</title>
<genre>Computer</genre>
</book>
<book>
<title>Midnight Rain</title>
<genre>Fantasy</genre>
</book>
</catalog>
The error:
org.jdom2.JDOMException: http://xml.org/sax/features/external-general-entities feature http://xml.org/sax/features/external-general-entities not supported for SAX driver org.apache.harmony.xml.ExpatReader
First i had to implement xercesImpl.jar
to my project.
Then i had to change the SAXBuilder
as below:
SAXBuilder builder = new SAXBuilder("org.apache.xerces.parsers.SAXParser");
builder.setFeature("http://xml.org/sax/features/external-general-entities", false);
And guess what, ChatGPT
solved my problem step by step. it's amazing.