我有一个应用程序,它使用.NET Web服务,它返回一个XML数据字符串。我试图读取这个XML并将其插入本地SQLite数据库,但我遇到了一些麻烦。下面是XML的一个样本:Android - 读取XML问题
<?xml version="1.0" encoding="utf-8" ?>
<string xmlns="RemoteWebService"><OpenIssues> <Table> <IssueID>15351</IssueID> <IssueSummary>Computer keeps crashing. This continues to be a problem</IssueSummary> <LocationName>West Side</LocationName> <Status>WIP</Status> <CustomerID>89755</CustomerID> <CustomerName>West Side Computers</CustomerName> <CustomerShortName>WSC</CustomerShortName> <Notes /> <STATUS1>Work In Progress</STATUS1> <SubmittedBy>WSC - Tom Johns</SubmittedBy> <EQ_Replaced>true</EQ_Replaced></Table> </OpenIssues></string>
使用DOM,我试图解析结果像这样:
private void GetLatestData(String response) throws ParserConfigurationException, SAXException, IOException{
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new InputSource(new StringReader(response)));
//Normalize the document.
doc.getDocumentElement().normalize();
//Get Root Node.
NodeList nodeList = doc.getElementsByTagName("Table");
Node node = nodeList.item(0);
//Get Child Nodes.
for(int i = 0; i < node.getChildNodes().getLength(); i++){
IssueInfo issue = new IssueInfo();
Node tempNode = node.getChildNodes().item(i);
if(tempNode.getNodeName().equalsIgnoreCase("IssueID")){
issue.setIssueNumber(Long.parseLong(tempNode.getTextContent()));
}
if(tempNode.getNodeName().equalsIgnoreCase("IssueSummary")){
issue.setIssueNumber(Long.parseLong(tempNode.getTextContent()));
}
if(issue.getIssueNumber() > 0 && issue.getIssueSummary() != null){
creator = new IssueInfoCreator(this, DBVersion);
creator.open();
creator.InsertIssue(issue.getIssueNumber(), DateFormat.getDateInstance().format(new Date()), issue.getIssueSummary());
creator.close();
}
}
}
当我运行它通过调试器,它就会“IssueID”就好了但是我怎么才能在它之后找到下一个节点“IssueSummary”,这样我就可以一次插入数据?似乎我需要另一个循环,只是不太确定。
是否特定于Android?也就是说,在IDE中运行代码时是否会出现与原始Java相同的错误?乍看之下,您似乎没有理由不能像抓取'IssueID'一样访问'IssueSummary'。 – 2012-02-08 18:37:49
我对Android开发很新,但是我正在用Eclipse开发这个应用程序,当我调试它时,它就像一个Android应用程序。不知道如何将它作为Java应用程序运行。 – Robert 2012-02-08 18:41:25
这是DOM解析不考虑Java/Android。 – kosa 2012-02-08 18:50:37