sam*_*m_k 1 java android sax xml-parsing
XML文件"&&"在节点的属性值中包含时无法解析.
XML文件:
<?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>
Run Code Online (Sandbox Code Playgroud)
什么时候使用pwd ="abc &&"那时它给我这样的错误,如果我不会使用特殊字符而不是它的工作正常.
错误:
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)
Run Code Online (Sandbox Code Playgroud)
代码:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
请帮助我并给我解决方案如何解析此值并在我的代码中使用.
谢谢
在XML中,所有&字符必须编码为&.
因此,无论文件来自何处,您都必须在尝试解析XML之前更改这些字符.
同样的:
< 如 <> 如 >请参阅XML和HTML字符实体引用列表.
| 归档时间: |
|
| 查看次数: |
5117 次 |
| 最近记录: |