累死了,快来帮帮小M,读取XML问题~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<?xml version= "1.0 " encoding= "gb2312 " ?>
<Topic>
<database>
<aa.mdb>
<table> 报告表 </table>
<table> 储量表 </table>
<table> 矿山表 </table>
</aa.mdb>
<bb.mdb>
<table> 矿山表 </table>
<table> 压覆表 </table>
<table> 地热表 </table>
</bb.mdb>
.....
.....
</database>
</Topic>
如上,是我自己建的一个XML,分别对应数据库里面相应的表,
比如,aa.mdb库里有 <报告表> <储量表> <矿山表> ,是这样的结构
现在我想读取每个数据库和表,该怎么做啊,
我写的程序,不太对,不是把数据库名全取出来就是把表名全取出来了,该怎么改呢,麻烦各位帮看下~~~
XmlTextReader reader = new XmlTextReader( Server.MapPath( "db.xml ") );
ArrayList NodeValues = new ArrayList();
while( reader.Read() )
{
if( reader.NodeType == XmlNodeType.Element && reader.Name == "aa.mdb " )
{
reader.Read();
string dbname = reader.Value ; //读取数据库名称
if( reader.NodeType == XmlNodeType.Element && reader.Name == "table " )
{
reader.Read();
NodeValues.Add( reader.Value ); //读取表名
}
}
[解决办法]
使用DOM解析
xmldoument
[解决办法]
使用XPATH解析整个文档。
[解决办法]
http://www.cnblogs.com/ocean2000/archive/2006/07/20/455504.html
http://www.cnblogs.com/ocean2000/archive/2006/07/20/455514.html
http://www.cnblogs.com/ocean2000/archive/2006/07/25/459226.html
http://www.cnblogs.com/ocean2000/archive/2006/08/08/471029.html
你可以查看下这上面的文章,应该简单的增删查改没什么问题的
[解决办法]
xmldoument
[解决办法]
http://www.51aspx.com/S/xml.aspx
看看这上面的示例源码
[解决办法]
string svla1 = string.Empty;
XmlDocument mXml = new XmlDocument();
mXml.Load(this._FilePath);
XmlNode xnode = mXml.SelectSingleNode( "//aa.mdb ");
foreach (XmlNode xno in xnode.ChildNodes)
{
svla1 += xno.InnerText + ", ";
}
[解决办法]
第一种方法,可以直接使用XmlDocument 等类来读,例如这样
XmlDocument mXml = new XmlDocument();
mXml.Load(文件名);
XmlNode xnode = mXml.Nodes;
然后遍历这些xnode
第二种方法使用xsd生成一个类文件,xsd可以在 \\Microsoft Visual Studio 8\SDK\v2.0\Bin下找到,然后可以使用xml的反序列化来作,这样出来的结果会是对象。
个人比较喜欢第二种方法,不过性能比第一种稍差
[解决办法]
这个该怎么写XML啊? 谢谢大家了~~~~~
------------------------------------------
没明白,能写第一种就能写第二种。我的blog上只有一篇以前写xml留下的资料,可以参考一下
[解决办法]
string svla1 = string.Empty;
XmlDocument mXml = new XmlDocument();
mXml.Load(this._FilePath);
XmlNode xnode = mXml.SelectSingleNode( "// ");
foreach (XmlNode xno in xnode.ChildNodes)
{
foreach(XmlNode xnoChild in xno.ChildNodes){
// xnoClild.InnerText
}
}