//读一个Xml文件,用XmlTextReader来读
public ArrayList readXml(string fileName)
{
ArrayList readResult=new ArrayList();
readResult.Clear(); XmlTextReader tr=new XmlTextReader(fileName);
while(!tr.EOF)
{
if(tr.MoveToContent()==XmlNodeType.Element)
{
try
{
readResult.Add(tr.ReadElementString());
}
catch(XmlException ex){}
}
else
{tr.Read();}
}
return readResult;
}
/*
 * 读一个Xml的XmlDocument,用递归调用方法来显示所读Xml的所有内容
 * 递归调用不适合文件很大的Xml文件读取,这里只是展示一下XmlDocument的内部结构
 * 正常情况可以用XmlDocument的GetElementsByTagName()方法来查询
 * */
public ArrayList readXml(XmlDocument doc){
ArrayList readResult=new ArrayList();
readResult.Clear(); XmlNodeList nodeLst=doc.ChildNodes;
XmlNodeListRead(readResult,nodeLst);

return readResult;
} //递归调用
public void XmlNodeListRead(ArrayList readResult,XmlNodeList nodeLst){
for (int i=0;i<nodeLst.Count;i++)
{
XmlNode node=nodeLst[i];
if(!node.HasChildNodes)
{
if(node.NodeType!=XmlNodeType.Comment & node.NodeType!=XmlNodeType.XmlDeclaration)
{
try
{readResult.Add(node.InnerText);}
catch(XmlException ex){}
}
}
else
{
XmlNodeListRead(readResult,node.ChildNodes);
}
}
} private void button1_Click(object sender, System.EventArgs e)
{
string fileName="books.xml";
ArrayList myRead=readXml(fileName);
this.listBox1.Items.Clear();
for(int i=0;i<myRead.Count;i++){this.listBox1.Items.Add(myRead[i].ToString());}
} private void button3_Click(object sender, System.EventArgs e)
{
doc.Load("booksEdit.xml"); //显示
ArrayList myRead=readXml(doc);
this.listBox1.Items.Clear();
for(int i=0;i<myRead.Count;i++){this.listBox1.Items.Add(myRead[i].ToString());}
}