2011-12-15 4 views
1

У меня есть Xml, который выглядит как что-то вроде этого:Использование ReadXml и Игнорировать Атрибут

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

В приведенном выше Xml, атрибут «тип» недавно был добавлен. Прежде чем добавить его, я мог бы использовать DataSet.ReadXml для чтения полного Xml в таблицу, а затем проанализировать элементы, которые мне нужны из DataSet.Tables [0]. После добавления атрибута DataSet.ReadXml не возвращает таблицы. Как я могу выполнять ту же функцию с атрибутом, как и без него? Мне не интересно читать атрибут type в моей таблице.

+0

В зависимости от версии .net и количества кода, который вам нужно написать, посмотрите на XPath или linq. –

+0

Вам действительно нужны все эти DataSet и DataTables, или linq-to-xml будет хорошо? – sll

+1

DataSet.ReadXml возвращает мне 2 таблицы. Один с «виджетами» в таблицах [0]. И один с остальными данными в таблицах [1]. – DaveShaw

ответ

0

Вот пример использования 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); 
} 
0

Еще один способ подойти к этой проблеме - заранее подготовить данные;

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)); 
Смежные вопросы