使用ReadXml和Ignore属性

本文关键字:属性 Ignore ReadXml 使用 | 更新日期: 2023-09-27 18:18:04

我有一个像这样的Xml:

<data type="widgets">
   <record>
      <id>1</id>
   </record>
   <record>
      <id>2</id>
   </record>
</data>

在上面的Xml中,"type"属性是最近添加的。在添加它之前,我可以使用DataSet。ReadXml将完整的Xml读取到表中,然后从DataSet.Tables[0]中解析出我需要的元素。添加属性后,DataSet。ReadXml不返回任何表。如何使用该属性执行与没有该属性时相同的功能?我对将type属性读取到表中不感兴趣。

使用ReadXml和Ignore属性

下面是一个使用XPath的示例。

XmlDocument doc = new XmlDocument();
doc.Load("C:''blah.xml");
XmlNodeList nodes = doc.SelectNodes("//data//record//id");
foreach (XmlNode node in nodes) {
    //do something meaningful
    Console.WriteLine(node.InnerText);
}

解决这个问题的另一种方法是提前准备好数据表;

string myXml = @"<data type=""widgets"">
    <record>
        <id>1</id>
    </record>
    <record>
        <id>2</id>
    </record>
</data>";
DataSet ds = new DataSet();
DataTable dt = new DataTable("record");
dt.Columns.Add("id", typeof(int));
ds.Tables.Add(dt);
ds.ReadXml(new StringReader(myXml));