【发布时间】:2016-11-27 03:25:02
【问题描述】:
我创建了用于从 XML 格式获取数据的类,但它多次返回数据哪里有问题?实际上我只想两个标签 en 和 ur 不是其他的。
我在服务器上的数据
<?xml version="1.0" encoding="UTF-8"?>
<words>
<word wid="373012">
<en>DOCTOR (Noun)</en>
<ur>حکیم </ur>
</word>
<word wid="356630">
<en>DOCTOR (Verb)</en>
<ur>بدلنا </ur>
</word>
<word wid="356633">
<en>DOCTOR (Verb)</en>
<ur>بدلنا دھوکا دینا ۔</ur>
</word>
<word wid="329801">
<en>DOCTOR</en>
<ur>ڈاکٹر معالج ۔</ur>
</word>
<word wid="364114">
<en>DOCTOR</en>
<ur>اُستاد </ur>
</word>
<word wid="190805">
<en>DOCTOR (Verb)</en>
<ur>ڈاکٹر بنانا ۔</ur>
</word>
</words>
恢复列表和XML解析的java代码
try {
ArrayList<UEDWord> list = null;
URL URL = new URL(stringURL);
XMLReader mXMLReader = SAXParserFactory.newInstance().newSAXParser().getXMLReader();
mXMLReader.setContentHandler(new MXMLHandler());
mXMLReader.parse(new InputSource(URL.openStream()));
list = MXMLHandler.getSearchResults();
return list;
} catch (Exception e) {
return null;
}
//
public class MXMLHandler extends DefaultHandler {
public static ArrayList<UEDWord> SearchResults = new ArrayList<UEDWord>();
String LastEngWord = "";
String LastUrduWord = "";
Boolean currentElement = false;
String currentValue = null;
public MXMLHandler() {
SearchResults.clear();
}
public static ArrayList<UEDWord> getSearchResults() {
return SearchResults;
}
public void characters(char[] characters, int position, int noOfChar) throws SAXException {
if (currentElement) {
currentValue = new String(characters, position, noOfChar);
currentElement = false;
}
}
public void startElement(String URI, String localname, String qualifiedname, Attributes attributes)
throws SAXException {
currentElement = true;
}
public void endElement(String URI, String localname, String qualifiedname) throws SAXException {
currentElement = false;
if (localname.equalsIgnoreCase("en"))
LastEngWord = currentValue;
// do {
if (localname.equalsIgnoreCase("ur"))
LastUrduWord = currentValue;
// return;
// } while (!localname.equalsIgnoreCase("word"));
// Log.e(URI, localname + " " + qualifiedname);
SearchResults.add(new UEDWord(LastEngWord, LastUrduWord));
}
}
SetterGetter 类
public class UEDWord {
private String EngWord;
private String UrduWord;
UEDWord(String EngWord, String UrduWord) {
this.EngWord = EngWord;
this.UrduWord = UrduWord;
}
public String getEngWord() {
return this.EngWord;
}
public String getUrduWord() {
return this.UrduWord;
}
public void setEngWord(String EngWord) {
this.EngWord = EngWord;
}
public void setUrduWord(String UrduWord) {
this.UrduWord = UrduWord;
}
}
【问题讨论】:
-
抱歉,您为什么不想将这些数据存储在带有适合您语言后缀的 strings.xml 中?
-
所以您说您的 Android 应用程序正在从服务器中提取该 XML 文件,然后对其进行解析?还是您的 Android 应用构建的 XML 然后发送到服务器?
-
亲爱的@MichaelSpitsin 数据在服务器上,数据记录超过100000,无法存储在string.xml中
-
@LuigiPower 我将数据存储在 phpmysql 上,我提供的词是查询数据库,并以上述形式返回数据。
-
另外,请不要在 Java 变量中使用大写首字母。
标签: android arraylist xml-parsing