#android
#Android
Вопрос:
Вот данные XML-файла, которые я хочу проанализировать. Я хочу получить последний тег, то есть содержимое . <RECEIPTNO>
Кто-нибудь может помочь?
<MSPDB><COMPANYNO>01</COMPANYNO><SALESPERSON>01101</SALESPERSON><MAPNO>5</MAPNO><CUSTOMERNO>1</CUSTOMERNO><ORDERNO>1</ORDERNO><QUOTENO>1</QUOTENO><LASTINVOICENO>1</LASTINVOICENO><RECEIPTNO>8</RECEIPTNO></MSPDB>
Вот код, который я пробовал использовать с помощью SAX parser.
String FILE_NAME = "Mspdb.xml";
File file=new File(Supporter.getAppCommonPath(),FILE_NAME);
FileInputStream stream;
try {
stream = new FileInputStream(file);
String[] result=parseDocument(stream);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
public String[] parseDocument(InputStream stream)
{
String[] resultArray=new String[8];
String result="";
SAXParserFactory parserFactory=SAXParserFactory.newInstance();
try {
SAXParser parser=parserFactory.newSAXParser();
XMLReader reader=parser.getXMLReader();
Xmlhandler handler=new Xmlhandler();
reader.setContentHandler(handler);
InputSource inputSource = new InputSource();
inputSource.setEncoding("UTF-8");
inputSource.setByteStream(stream);
reader.parse(inputSource);
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
result=resultArray[7];
return resultArray;
}
class Xmlhandler extends DefaultHandler
{
private String tempVal;
private String receiptNo;
private String value;
@Override
public void startDocument() throws SAXException {
// TODO Auto-generated method stub
super.startDocument();
}
@Override
public void endDocument() throws SAXException {
// TODO Auto-generated method stub
super.endDocument();
}
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
// TODO Auto-generated method stub
value="";
tempVal="";
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
// TODO Auto-generated method stub
System.out.println("Value:" tempVal);
System.out.println("End:" localName);
if(localName.equalsIgnoreCase("RECEIPTNO"))
{
receiptNo=tempVal;
}
}
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
// TODO Auto-generated method stub
value=new String(ch, start, length);
tempVal=value tempVal;
}
}
Комментарии:
1. Если вам нужно только значение тега RECEIPTNO и вы уверены, что существует только один из них, то использование синтаксического анализатора sax является излишним. Просто используйте .indexOf(«<RECEIPTNO>») и .indexOf(«</RECEIPTNO>»), а затем .substring().
2. @greenapps: Можете ли вы подробнее рассказать о том, как и где использовать .indexOf() и .substring()?
3. Просто примените их к строке , которую вы вызываете
the xml file data
.4. Можете ли вы дать точный код, пожалуйста?