XML file cant able to parse when it contains "&&"
in node's attribute value.
XML file :
<?xml version="1.0" encoding="UTF-8" ?>
<test version="0.0.3" >
<SFTP ipaddress="12.12.12.12" port="22" uname="abc" pwd="abc&&" path="/testdev" />
</test>
when is used pwd="abc&&" at that time it gives me error like this, If i will not used special characters than its working fine.
Error :
At line 3, column 62: not well-formed (invalid token)
org.apache.harmony.xml.ExpatParser$ParseException: At line 3, column 62: not well-formed (invalid token)
at org.apache.harmony.xml.ExpatParser.parseFragment(ExpatParser.java:515)
at org.apache.harmony.xml.ExpatParser.parseDocument(ExpatParser.java:474)
at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:321)
at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:279)
at com.test.bl.ConfigurationParser.parseFile(ConfigurationParser.java:61)
at com.test.ui.LoginActivity$ConfigurationXMLParseOperation.doInBackground(LoginActivity.java:209)
at com.test.ui.LoginActivity$ConfigurationXMLParseOperation.doInBackground(LoginActivity.java:1)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask.run(FutureTask.java:234)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
at java.lang.Thread.run(Thread.java:856)
Code :
public void parseFile(final InputStream inputStream) throws ParserConfigurationException,
SAXException, IOException {
try {
final SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
final SAXParser saxParser = saxParserFactory.newSAXParser();
final XMLReader xmlReader = saxParser.getXMLReader();
xmlReader.setContentHandler(this);
xmlReader.parse(new InputSource(inputStream));
} catch (ParserConfigurationException e) {
Logger.e(TAG, e.getMessage(), e);
} catch (SAXException e) {
Logger.e(TAG, e.getMessage(), e);
} catch (IOException e) {
Logger.e(TAG, e.getMessage(), e);
}
}
@Override
public void startElement(final String uri, final String localName, final String qName,
final Attributes attributes) throws SAXException {
mElementStart = true;
if (localName.equals(null)) {
Logger.i(TAG, "Devices xml file is empty");
}
tempValue = "";
if (localName.equalsIgnoreCase(mSFTPParseNodeString)) {
sftpConfiguration = new SFTPConfiguration();
sftpConfiguration.mSftpIp = attributes.getValue(mSFTPIpParseNodeString);
sftpConfiguration.mRemotePath = attributes.getValue(mSFTPPathParseNodeString);
sftpConfiguration.mSftpPort = Integer.parseInt(attributes
.getValue(mSFTPPortParseNodeString));
sftpConfiguration.mUserName = attributes.getValue(mSFTPUserNameParseNodeString);
sftpConfiguration.mUserPassword = attributes.getValue(mSFTPPasswordParseNodeString);
}
}
Please help me and give me solution how can i parse this value and use in my code.
Thanks