class cast exception on using xmlresouceparser with Document - android

Hi all i have a class cast exception, No idea what is this, Can any one help on this
XmlResourceParser fXmlFile = mn.getResources().getXml(R.layout.savecredentials);
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
Document doc = docBuilder.parse((InputStream) fXmlFile); //exception is on //this line

You're casting an XmlResourceParser
XmlResourceParser fXmlFile = mn.getResources().getXml(R.layout.savecredentials);
to an InputStream:
docBuilder.parse((InputStream) fXmlFile);

Related

Android dom parser - illegal characters exception

I need to parse a xml document in my Android application and I'm using Dom parser. Encoding in my xml file is set to UTF-8. The code I'm using for parsing is as follows:
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
InputStream inStream = getAssets().open("words.xml");
InputSource inSource = new InputSource(inStream);
inSource.setEncoding("UTF-8");
Document doc = db.parse(inSource);
But the problem is that I get an illegal character exception. The node which is problematic has the following structure:
<obriši>
<item>obriši</item>
<item>ukloni</item>
</obriši>
What could be the problem?
Try with
inSource.setEncoding("windows-1251");

IO Exception looking for File Path using DOM in android

There are a few posts re: this topic but can't figure out why this won't work.
Keep getting an IOException. Guessing it can't find the file. Cheers.
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse("//res/xml/xml_data.xml");
Change yours with this
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse("res/xml/xml_data.xml");
Your URL is incorrect. Resources take the form:
"android.resource://[package]/[res type]/[res name]"
or
"android.resource://[package]/[res id]
ie
"android.resource://com.org.example/xml/xml_data" // No extension
"android.resource://com.org.example/" + R.xml.xml_data

Parsing XML file stored in internal storage using DOM parser in android.

I have created an xml file in the device's internal storage as described on the android developers website. I now want to parse the file using DOM parser. What do i need to do to make the DOM parser read my XML file??
Here's a snippet:
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document dom = db.parse(new InputSource(new StringReader(data)));
dom.getDocumentElement().normalize();
What do i need to put in the place of "data" in:
Document dom = db.parse(new InputSource(new StringReader(data)));
I know it's silly but any help would be appreciated.
You can make a input stream of the xml string like below and then getting nodes you can parse to get values.
InputStream is = new ByteArrayInputStream(theXMLString.getBytes("UTF-8"));
// Build XML document
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(is);
Remember you are passing xml file as a string.
You can give FileInputStream in inputsource
Document dom = db.parse(new InputSource(new FileInputStream(data)));
For reading XML file, you should try below
FileInputStream in = new FileInputStream("/sdcard/text.txt");
StringBuffer data = new StringBuffer();
InputStreamReader isr = new InputStreamReader(in);
BufferedReader inRd = new BufferedReader(isr);
String text;
while ((text = inRd.readLine()) != null) {
inLine.append(text);
inLine.append("\n");
}
in.close();
String finalData =data.toString(); // Here is your data.
Hope above may useful to you.
Try this code for parsing from Asset folder using DOM Parser :
DocumentBuilderFactory DBF;
DocumentBuilder DB;
Document dom;
Element elt;
DBF = DocumentBuilderFactory.newInstance();
DB = DBF.newDocumentBuilder();
dom = DB.parse(new InputSource(getAssets().open("city.xml")));
elt = dom.getDocumentElement();
NodeList items = elt.getElementsByTagName("item");
where item is Node element, add try ctch block as per the requirements.

Use Url to receive xml

I want to read xml from url:
URL url = new URL("http://192.168.2.20/test.xml");
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new InputSource(url.openStream()));
doc.getDocumentElement().normalize();
This works. But when I want to read from a url that needs authentication this method fails.
So for
url = new URL("http://admin:pass#192.168.2.20/test.xml");
it does not work.
Any ideas?
Something, like this, may be? http://blogs.deepal.org/2008/01/sending-basic-authentication-using-url.html

XML String parsing in Android?

I use the following code to parse the XML file.
DocumentBuilderFactory factory;
DocumentBuilder builder;
InputStream is;
Document dom;
try {
factory = DocumentBuilderFactory.newInstance();
is = new FileInputStream(strFileName);
builder = factory.newDocumentBuilder();
dom = builder.parse(is);
}
catch(Exception e){}
Instead of XML file is there any way to parse the String.
String xml="<?xml version="1.0"?> <name> Application</name> <demo> Demo </demo> </xml>";
You can convert your string to an InputStream using ByteArrayInputStream:
String xml ="valid xml here";
InputStream is = new ByteArrayInputStream(xml.getBytes("UTF-8"));
dom = builder.parse(is);
You can use StringReader :
StringReader sr = new StringReader(xml);
InputSource is = new InputSource(sr);
Document d = builder.parse(is);

Categories

Resources