Android 如何使用DOM解析器XML将数据转储到Spinner和ListView
我有一个问题,希望您能提供帮助,现在我可以将XML DOM中的数据读取到Spinner或ListView,但我需要Android 如何使用DOM解析器XML将数据转储到Spinner和ListView,android,xml,listview,dom,spinner,Android,Xml,Listview,Dom,Spinner,我有一个问题,希望您能提供帮助,现在我可以将XML DOM中的数据读取到Spinner或ListView,但我需要 放置在微调器上的XML标记的标题(注意不要重叠) ListView中包含的其他信息 每次我在Spinner中选择Title时,只会以XML格式显示该标题下的员工 你怎么知道的? 我的XML文件: <?xml version="1.0" encoding="utf-8"?> <employees> <employee id ="1" titl
- 放置在微调器上的XML标记的标题(注意不要重叠)
- ListView中包含的其他信息
- 每次我在Spinner中选择Title时,只会以XML格式显示该标题下的员工
<?xml version="1.0" encoding="utf-8"?>
<employees>
<employee id ="1" title="Human Resources Department ">
<name>Name A</name>
<phone>0909000111</phone>
</employee>
<employee id ="1" title="Human Resources Department ">
<name>Name B</name>
<phone>0909000112</phone>
</employee>
<employee id ="2" title="Technical Department ">
<name>Name A - 2</name>
<phone>0909000222</phone>
</employee>
<employee id ="2" title="Human Resources Department ">
<name>Name B - 2</name>
<phone>0909000223</phone>
</employee>
<employee id ="3" title="Sales Office ">
<name>Name C - 1</name>
<phone>0909000333</phone>
</employee>
<employee id ="3" title="Sales Office ">
<name>Name C - 2</name>
<phone>0909000333</phone>
</employee>
</employees>
班级部
package com.example.bai29_tulam;
import java.util.ArrayList;
import android.app.Activity;
public class Department extends Gods{
public ArrayList<Employee>listEmploy=null;
public Department(String id,String name){
super(id,name);
this.listEmploy=new ArrayList<Employee>();
}
public Department(){
super();
this.listEmploy=new ArrayList<Employee>();
}
public boolean addEmploy(Employee employee){
employee.setDeparment(this);
return listEmploy.add(employee);
}
public ArrayList<Employee>getListEmployee(){
return this.listEmploy;
}
public int size(){
return listEmploy.size();
}
public Employee get(int i){
return listEmploy.get(i);
}
}
课堂活动
package com.example.bai29_tulam;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity implements OnClickListener {
Button btn_DOM, btn_SAX;
Spinner spin;
ListView lisview;
EditText editData;
TextView textData;
ArrayList<Employee> arrList = new ArrayList<Employee>();
ArrayAdapter<Employee> adapter;
ArrayList<Department> arrSpin = new ArrayList<Department>();
ArrayAdapter<Department> adapSpin;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// editData = (EditText) findViewById(R.id.editData);
spin = (Spinner) findViewById(R.id.spinner);
adapSpin = new ArrayAdapter<Department>(this,
android.R.layout.simple_spinner_item, arrSpin);
adapSpin.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spin.setAdapter(adapSpin);
spin.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
loadListEmployeeByDepartment(arrSpin.get(position));
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
});
lisview = (ListView) findViewById(R.id.listView);
adapter = new ArrayAdapter<Employee>(this,
android.R.layout.simple_list_item_1, arrList);
lisview.setAdapter(adapter);
btn_DOM = (Button) findViewById(R.id.btn_DOM);
btn_SAX = (Button) findViewById(R.id.btn_SAX);
btn_DOM.setOnClickListener(this);
btn_SAX.setOnClickListener(this);
}
protected void loadListEmployeeByDepartment(Department department) {
// TODO Auto-generated method stub
// arrList.clear();
arrList.addAll(department.getListEmployee());
adapSpin.notifyDataSetChanged();
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.btn_DOM:
loadDataDOM();
break;
case R.id.btn_SAX:
loadDataSAX();
break;
}
}
private void loadDataSAX() {
// TODO Auto-generated method stub
}
private void loadDataDOM() {
// TODO Auto-generated method stub
try {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = dbf.newDocumentBuilder();
// Create Path File
String sdcard = Environment.getExternalStorageDirectory()
.getAbsolutePath();
String xmfile = sdcard + "/employee.xml";
FileInputStream fIn = new FileInputStream(xmfile);
//Creat Document from builder to parser FileInput
Document doc = builder.parse(fIn);
//browse element from doc
Element root = doc.getDocumentElement();
NodeList list = root.getChildNodes();
for (int i = 0; i < list.getLength(); i++) {
Node node = list.item(i);
if (node instanceof Element) {
Element employee = (Element) node;
String id = employee.getAttribute("id");
String title = employee.getAttribute("title");
String temp = id + title;
NodeList listChild = employee.getElementsByTagName("name");
String name = listChild.item(0).getTextContent();
listChild = employee.getElementsByTagName("phone");
String phone = listChild.item(0).getTextContent();
Department dp = new Department();
dp.setId(id);
dp.setName(title);
if (temp.trim().equalsIgnoreCase(dp.toString())) {
Employee nvcpb = new Employee();
nvcpb.setId(name);
nvcpb.setName(phone);
nvcpb.setDeparment(dp);
arrList.add(nvcpb);
} else {
}
arrSpin.add(dp);
// arrSpin.add(nameSpin);
}
}
adapSpin.notifyDataSetChanged();
// textData.setText(datashow);
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package com.example.bai29_tulam;
导入java.io.FileInputStream;
导入java.io.IOException;
导入java.util.ArrayList;
导入javax.xml.parsers.DocumentBuilder;
导入javax.xml.parsers.DocumentBuilderFactory;
导入javax.xml.parsers.parserConfiguration异常;
导入org.w3c.dom.Document;
导入org.w3c.dom.Element;
导入org.w3c.dom.Node;
导入org.w3c.dom.NodeList;
导入org.xml.sax.SAXException;
导入android.app.Activity;
导入android.os.Bundle;
导入android.os.Environment;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.widget.AdapterView;
导入android.widget.AdapterView.OnItemSelectedListener;
导入android.widget.ArrayAdapter;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.ListView;
导入android.widget.Spinner;
导入android.widget.TextView;
导入android.widget.Toast;
公共类MainActivity扩展活动实现OnClickListener{
按钮btn_DOM,btn_SAX;
旋转器旋转;
ListView;
编辑文本编辑数据;
文本视图文本数据;
ArrayList arrList=新的ArrayList();
阵列适配器;
ArrayList arrSpin=新的ArrayList();
ArrayaAdapspin;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//editData=(EditText)findViewById(R.id.editData);
spin=(微调器)findViewById(R.id.Spinner);
adapSpin=新阵列适配器(此,
android.R.layout.simple\u微调器\u项目,arrSpin);
adapSpin.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
转固转接器(adapSpin);
spin.setOnItemSelectedListener(新的OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView父视图、视图、,
内部位置,长id){
//TODO自动生成的方法存根
loadListEmployeeByDepartment(arrSpin.get(position));
}
@凌驾
未选择公共无效(AdapterView父级){
//TODO自动生成的方法存根
}
});
lisview=(ListView)findViewById(R.id.ListView);
适配器=新阵列适配器(此,
android.R.layout.simple_list_item_1,arrList);
setAdapter(适配器);
btn_DOM=(按钮)findviewbyd(R.id.btn_DOM);
btn_SAX=(按钮)findViewById(R.id.btn_SAX);
btn_DOM.setOnClickListener(这个);
btn_SAX.setOnClickListener(这个);
}
受保护的void loadlistedemployeebydepartment(部门){
//TODO自动生成的方法存根
//arrList.clear();
arrList.addAll(department.getListEmployee());
adapSpin.notifyDataSetChanged();
}
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
开关(v.getId()){
案例R.id.btn\U DOM:
loadDataDOM();
打破
案例R.id.btn\U SAX:
loadDataSAX();
打破
}
}
私有void loadDataSAX(){
//TODO自动生成的方法存根
}
私有void loadDataDOM(){
//TODO自动生成的方法存根
试一试{
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder=dbf.newDocumentBuilder();
//创建路径文件
字符串sdcard=Environment.getExternalStorageDirectory()
.getAbsolutePath();
字符串xmfile=sdcard+“/employee.xml”;
FileInputStream fIn=新的FileInputStream(xmfile);
//从生成器到解析器FileInput创建文档
文档doc=builder.parse(fIn);
//从文档浏览元素
元素根=doc.getDocumentElement();
NodeList list=root.getChildNodes();
对于(int i=0;i package com.example.bai29_tulam;
import android.app.Activity;
public class Employee extends Gods{
private Department dp;
public Department getDepartment(){
return dp;
}
public void setDeparment(Department depart){
this.dp=depart;
}
public Employee(String id,String name, Department depart){
super(id,name);
this.dp=depart;
}
public Employee(String id,String name){
super(id,name);
}
public Employee(){
super();
}
}
package com.example.bai29_tulam;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity implements OnClickListener {
Button btn_DOM, btn_SAX;
Spinner spin;
ListView lisview;
EditText editData;
TextView textData;
ArrayList<Employee> arrList = new ArrayList<Employee>();
ArrayAdapter<Employee> adapter;
ArrayList<Department> arrSpin = new ArrayList<Department>();
ArrayAdapter<Department> adapSpin;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// editData = (EditText) findViewById(R.id.editData);
spin = (Spinner) findViewById(R.id.spinner);
adapSpin = new ArrayAdapter<Department>(this,
android.R.layout.simple_spinner_item, arrSpin);
adapSpin.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spin.setAdapter(adapSpin);
spin.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
loadListEmployeeByDepartment(arrSpin.get(position));
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
});
lisview = (ListView) findViewById(R.id.listView);
adapter = new ArrayAdapter<Employee>(this,
android.R.layout.simple_list_item_1, arrList);
lisview.setAdapter(adapter);
btn_DOM = (Button) findViewById(R.id.btn_DOM);
btn_SAX = (Button) findViewById(R.id.btn_SAX);
btn_DOM.setOnClickListener(this);
btn_SAX.setOnClickListener(this);
}
protected void loadListEmployeeByDepartment(Department department) {
// TODO Auto-generated method stub
// arrList.clear();
arrList.addAll(department.getListEmployee());
adapSpin.notifyDataSetChanged();
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.btn_DOM:
loadDataDOM();
break;
case R.id.btn_SAX:
loadDataSAX();
break;
}
}
private void loadDataSAX() {
// TODO Auto-generated method stub
}
private void loadDataDOM() {
// TODO Auto-generated method stub
try {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = dbf.newDocumentBuilder();
// Create Path File
String sdcard = Environment.getExternalStorageDirectory()
.getAbsolutePath();
String xmfile = sdcard + "/employee.xml";
FileInputStream fIn = new FileInputStream(xmfile);
//Creat Document from builder to parser FileInput
Document doc = builder.parse(fIn);
//browse element from doc
Element root = doc.getDocumentElement();
NodeList list = root.getChildNodes();
for (int i = 0; i < list.getLength(); i++) {
Node node = list.item(i);
if (node instanceof Element) {
Element employee = (Element) node;
String id = employee.getAttribute("id");
String title = employee.getAttribute("title");
String temp = id + title;
NodeList listChild = employee.getElementsByTagName("name");
String name = listChild.item(0).getTextContent();
listChild = employee.getElementsByTagName("phone");
String phone = listChild.item(0).getTextContent();
Department dp = new Department();
dp.setId(id);
dp.setName(title);
if (temp.trim().equalsIgnoreCase(dp.toString())) {
Employee nvcpb = new Employee();
nvcpb.setId(name);
nvcpb.setName(phone);
nvcpb.setDeparment(dp);
arrList.add(nvcpb);
} else {
}
arrSpin.add(dp);
// arrSpin.add(nameSpin);
}
}
adapSpin.notifyDataSetChanged();
// textData.setText(datashow);
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}