XML文件如下:
<?xml version="1.0" encoding="gb2312"?>
<?xml:stylesheet type="text/xsl" href="test.xsl"?>
<provinces>
<province pn="河北省">
<cn>石家庄市</cn>
<cn>张家口市</cn>
</province>
<province pn="四川省">
<cn>德阳市</cn>
<cn>yyyyy市</cn>
<cn>zzzz市</cn>
</province>
<province pn="贵州省">
<cn>贵阳市</cn>
</province>
</provinces>--------------------------
XmlTextReader xmlReader=null;
string sFilePath_XML=@"G:\Web\xml\province.xml"; try
{
xmlReader=new XmlTextReader(sFilePath_XML);
}
catch(XmlException ex)
{
Console.WriteLine(ex.ToString());
}
finally
{
if(xmlReader!=null)
xmlReader.Close();
}
......//以下的代码该如何写问题1:如果@"G:\Web\xml\province.xml";路径不对,好象提示不了错误信息
问题2:如何循环读取每一个省
问题3:如何循环读取每一个市
问题4:如何定位到某一个省循环读取下面的市
问题5:如果需求是以上的这些,是不是XmlTextReader是最好的选择,如果不是,还有什么类更好!
在这里请教老鸟,先谢谢了~
<?xml version="1.0" encoding="gb2312"?>
<?xml:stylesheet type="text/xsl" href="test.xsl"?>
<provinces>
<province pn="河北省">
<cn>石家庄市</cn>
<cn>张家口市</cn>
</province>
<province pn="四川省">
<cn>德阳市</cn>
<cn>yyyyy市</cn>
<cn>zzzz市</cn>
</province>
<province pn="贵州省">
<cn>贵阳市</cn>
</province>
</provinces>--------------------------
XmlTextReader xmlReader=null;
string sFilePath_XML=@"G:\Web\xml\province.xml"; try
{
xmlReader=new XmlTextReader(sFilePath_XML);
}
catch(XmlException ex)
{
Console.WriteLine(ex.ToString());
}
finally
{
if(xmlReader!=null)
xmlReader.Close();
}
......//以下的代码该如何写问题1:如果@"G:\Web\xml\province.xml";路径不对,好象提示不了错误信息
问题2:如何循环读取每一个省
问题3:如何循环读取每一个市
问题4:如何定位到某一个省循环读取下面的市
问题5:如果需求是以上的这些,是不是XmlTextReader是最好的选择,如果不是,还有什么类更好!
在这里请教老鸟,先谢谢了~
try
{
xmlReader=new XmlTextReader(sFilePath_XML);
while (xmlReader.Read())
{
//....
}
}
catch(XmlException ex)
{
Console.WriteLine(ex.ToString());
}
>>>问题2:如何循环读取每一个省
>>>问题3:如何循环读取每一个市try something like (didn't test, so there might be errors)try
{
xmlReader=new XmlTextReader(sFilePath_XML);
while (xmlReader.Read())
{
if (xmlReader.NodeType == XmlNodeType.Element && xmlReader.LocalName == "province")
{
Console.WriteLine(xmlReader.GetAttribute("pn"));
ReadCity(xmlReader);
}
}
}
catch(XmlException ex)
{
Console.WriteLine(ex.ToString());
}
finally
{
if(xmlReader!=null)
xmlReader.Close();
}
void ReadCity(XmlTextReader xmlReader)
{
while (xmlReader.Read())
{
if (xmlReader.NodeType != XmlNodeType.EndElement && xmlReader.LocalName == "province")
return; if (xmlReader.NodeType != XmlNodeType.Element && xmlReader.LocalName == "cn")
Console.WriteLine(xmlReader.ReadString());
}
}>>>>问题4:如何定位到某一个省循环读取下面的市you have to go through the loop like the above code, otherwise, you shouldn't be using XmlTextReader, use XmlDocument or XPathNavigator + Xpath
>>>>问题5:如果需求是以上的这些,是不是XmlTextReader是最好的选择,如果不是,还有什么类更好!if your xml is small, then use XmlDocument, otherwise, use XPathNavigator
{
while (xmlReader.Read())
{
if (xmlReader.NodeType == XmlNodeType.EndElement && xmlReader.LocalName == "province")
return; if (xmlReader.NodeType == XmlNodeType.Element && xmlReader.LocalName == "cn")
Console.WriteLine(xmlReader.ReadString());
}
}
{
Console.WriteLine(xmlReader.GetAttribute("pn"));
//ReadCity(xmlReader);
string str=Console.ReadLine();
}为什么这样,我只能读取第一个省份,感觉没有循环?!请教~
你的意思是现在几乎用不到XmlTextReader,而如果是容量小的XML文件,一般都用XmlDocument
而比较大的XML文件都用XPathNavigator而且XPathNavigator可以支持XPATH迅速定位?!不知道我的理解是不是正确呢