我有一个Profesor对象列表。我正在尝试从资产文件夹中读取xml文件“ listaprofesori.xml”,并根据XML数据创建其他Profesor对象,但是不会将它们添加到我的当前列表中。有什么问题?
运行时,应用程序读取我的列表,其中填充了在onCreate中创建的对象。
此外,对象Profesor具有以下属性,所有属性均为String类型:nume,prenume,用户名,parola,email,sex,dept,datan。
我只是试图显示从xml中获取的值,认为问题是我试图将新对象添加到当前对象列表的方式,但是我的代码甚至没有读取我的xml..i初学者,我也尝试使用xmlpullparser做到这一点,但情况更糟,而且我对这种方式了解得更多。预先谢谢你,我很拼命:(!
这是我的Java代码:
public class MainActivity extends Activity {
private List<Profesor> listaProfesori = new ArrayList<>();
private TextView listaa;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listaa=findViewById(R.id.textView);
Profesor p1 = new Profesor("Badea", "Angela", "angelab", "profcib", "badeaangela@gmail.com", "fem", "Informatica si Cibernetica Economica", "18/12/1970");
Profesor p2 = new Profesor("Mitrut", "Ovidiu", "mitrutov", "prof2", "mitrutovidiu@gmail.com", "masc", "Informatica si Cibernetica Economica", "18/06/1955");
Profesor p3 = new Profesor("Onisor", "Mihaela", "onisormih", "prof3664", "onisormihaela@gmail.com", "fem", "Economie", "20/04/1981");
listaProfesori.add(p1);
listaProfesori.add(p2);
listaProfesori.add(p3);
try {
Profesor prof = new Profesor();
InputStream is = getAssets().open("listaprofesori.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(is);
Element element=doc.getDocumentElement();
element.normalize();
NodeList nList = doc.getElementsByTagName("PROFESOR");
for (int i=0; i<nList.getLength(); i++) {
Node node = nList.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) node;
prof = new Profesor();
prof.setNume(eElement.getElementsByTagName("NUME").item(0).getTextContent());
prof.setPrenume(eElement.getElementsByTagName("PRENUME").item(0).getTextContent());
prof.setUsername(eElement.getElementsByTagName("USERNAME").item(0).getTextContent());
prof.setPassword(eElement.getElementsByTagName("PAROLA").item(0).getTextContent());
prof.setEmail(eElement.getElementsByTagName("EMAIL").item(0).getTextContent());
prof.setSex(eElement.getElementsByTagName("SEX").item(0).getTextContent());
prof.setDept(eElement.getElementsByTagName("DEPT").item(0).getTextContent());
prof.setDatan(eElement.getElementsByTagName("DATAN").item(0).getTextContent());
listaProfesori.add(prof);
}
}
} catch (IOException e) {
e.printStackTrace();
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
}
StringBuilder builder = new StringBuilder();
for (Profesor p:listaProfesori) {
builder.append(p.toString() + "\n");
}
listaa.setText(builder.toString());
}
private static String getValue(String tag, Element element) {
NodeList nodeList = element.getElementsByTagName(tag).item(0).getChildNodes();
Node node = (Node) nodeList.item(0);
return node.getNodeValue();
}}
这是我的xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<LISTAPROFESORI>
<PROFESOR>
<NUME>Stroe</NUME>
<PRENUME>Sorin</PRENUME>
<USERNAME>StroeS</USERNAME>
<PAROLA>profxml</PAROLA>
<EMAIL>sorinstroe@gmail.com</EMAIL>
<SEX>masc</SEX>
<DEPT>Finante</DEPT>
<DATAN>16/05/1976</DATAN>
</PROFESOR>
<PROFESOR>
<NUME>Enache</NUME>
<PRENUME>Maria</PRENUME>
<USERNAME>EnacheM</USERNAME>
<PAROLA>profxml222</PAROLA>
<EMAIL>enachemaria@gmail.com</EMAIL>
<SEX>fem</SEX>
<DEPT>Finante</DEPT>
<DATAN>12/01/1955</DATAN>
</PROFESOR>
<PROFESOR>
<NUME>Mihalache</NUME>
<PRENUME>Ionut</PRENUME>
<USERNAME>MihalacheIonut</USERNAME>
<PAROLA>profxml785643</PAROLA>
<EMAIL>mihalacheionut@gmail.com</EMAIL>
<SEX>masc</SEX>
<DEPT>Baze de date</DEPT>
<DATAN>06/05/1971</DATAN>
</PROFESOR>
</LISTAPROFESORI>