如何读取如下xml文件内容
下面的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>
[解决办法]
今天刚做过, 参考一下:
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
[解决办法]
你这个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加载这生成的文档控件绑定就好了