如何读取如下xml文件内容

yuehaiyang 2007-05-15 05:59:25
下面的xml是用delphi导出来的数据,用c#如何读取文件内容并用datagridview显示出来?最好有读取的代码!
<xml xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'
xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882'
xmlns:rs='urn:schemas-microsoft-com:rowset'
xmlns:z='#RowsetSchema'>
<s:Schema id='RowsetSchema'>
<s:ElementType name='row' content='eltOnly' rs:updatable='true'>
<s:AttributeType name='tname' rs:number='1' rs:nullable='true' rs:writeunknown='true' rs:basecatalog='p9_z4'
rs:basetable='t_rbshlib' rs:basecolumn='tname'>
<s:datatype dt:type='string' rs:dbtype='str' dt:maxLength='50'/>
</s:AttributeType>
<s:AttributeType name='sex' rs:number='2' rs:nullable='true' rs:writeunknown='true' rs:basecatalog='p9_z4'
rs:basetable='t_rbshlib' rs:basecolumn='sex'>
<s:datatype dt:type='ui1' dt:maxLength='1' rs:precision='3' rs:fixedlength='true'/>
</s:AttributeType>
<s:AttributeType name='tcode' rs:number='3' rs:nullable='true' rs:writeunknown='true' rs:basecatalog='p9_z4'
rs:basetable='t_rbshlib' rs:basecolumn='tcode'>
<s:datatype dt:type='string' rs:dbtype='str' dt:maxLength='50'/>
</s:AttributeType>
<s:AttributeType name='TID' rs:number='4' rs:writeunknown='true' rs:basecatalog='p9_z4' rs:basetable='t_rbshlib'
rs:basecolumn='TID' rs:keycolumn='true' rs:hidden='true'>
<s:datatype dt:type='i8' dt:maxLength='8' rs:precision='19' rs:fixedlength='true' rs:maybenull='false'/>
</s:AttributeType>
<s:extends type='rs:rowbase'/>
</s:ElementType>
</s:Schema>
<rs:data>
<z:row tname='冯兴照' sex='1' tcode='055' TID='4864'/>
<z:row tname='张毓祥' sex='1' tcode='056' TID='4865'/>
<z:row tname='李建辉' sex='1' tcode='057' TID='4866'/>
<z:row tname='张福金' sex='1' tcode='058' TID='4867'/>
<z:row tname='张福金' sex='1' tcode='058' TID='4868'/>
<z:row tname='李志明' sex='1' tcode='059' TID='4869'/>
<z:row tname='何文和' sex='1' tcode='060' TID='4870'/>
</rs:data>
</xml>
...全文
344 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wag1_1 2007-05-15
  • 打赏
  • 举报
回复
你这个xml主要的信息是<rs:data>
<z:row tname='冯兴照' sex='1' tcode='055' TID='4864'/>
<z:row tname='张毓祥' sex='1' tcode='056' TID='4865'/>
<z:row tname='李建辉' sex='1' tcode='057' TID='4866'/>
<z:row tname='张福金' sex='1' tcode='058' TID='4867'/>
<z:row tname='张福金' sex='1' tcode='058' TID='4868'/>
<z:row tname='李志明' sex='1' tcode='059' TID='4869'/>
<z:row tname='何文和' sex='1' tcode='060' TID='4870'/>
</rs:data>
可以用xpath定位到<rs:data>
从<rs:data>开始重新生成一个xmldocument。然后用dataset加载这生成的文档控件绑定就好了
yuehaiyang 2007-05-15
  • 打赏
  • 举报
回复
谢谢,试试先
ChengKing 2007-05-15
  • 打赏
  • 举报
回复

今天刚做过, 参考一下:
XmlReaderSettings settings = new XmlReaderSettings();
settings.IgnoreWhitespace = true;
settings.IgnoreComments = true;
NameTable nt = new NameTable();
string link = nt.Add("link");
settings.NameTable = nt;

//验证
settings.Schemas.Add(null, XmlReader.Create(this.XMLSchemaFile));
settings.ValidationType = ValidationType.Schema;
settings.ValidationFlags = XmlSchemaValidationFlags.ReportValidationWarnings;
settings.ValidationEventHandler += new ValidationEventHandler(settings_ValidationEventHandler);

//序列化工厂类
XmlSerializerFactory factory = new XmlSerializerFactory();

using (XmlReader reader = XmlReader.Create( this.XMLDataFile, settings))
{
while (reader.Read())
{
if (reader.NodeType == XmlNodeType.Element && String.Compare(link, reader.LocalName,true)==0)
{
XmlSerializer xs = factory.CreateSerializer(typeof(Link));
Link l = (Link)xs.Deserialize(reader.ReadSubtree());
ItemRow item = new ItemRow(l.ImageName, l.Text, l.LinkTo, l.LinkTarget);
tbParent.Controls.Add(item);
}
}
}

另外, 这里有怎么操作XML文档PPT和代码示例:
http://blog.csdn.net/ChengKing/archive/2006/03/31/646363.aspx

110,549

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧