2011-01-05 2 views
1

Я хочу использовать dataset.readxml для извлечения некоторых данных из XML-файла. Но мой формат XML не имеет хорошего формата, одна часть для набора данных и другая часть для других вещей. Также, как Я извлекаю часть набора данных. Я развиваюсь в формате C# .net 2008.xml, как показано ниже.Некоторая проблема при использовании DataSet.ReadXML

<Object type="Sample"> 
    <Object type="Tool"> 
    <Property name="Text">Prescription1</Property> 
    <Property name="Name">Prescription1</Property>   
    <Object type="TextBox">  
    <Property name="Text">Singapore</Property> 
    <Property name="Name">TextBox2</Property>  
    </Object>  
    <DataSet>       //This Part 
    <TableOne>  
     <ItemID>001</ItemID> 
     <ItemName>Item001</ItemName> 
     <Price>100</Price>  
    </TableOne> 
    <TableOne> 
     <ItemID>002</ItemID> 
     <ItemName>Item002</ItemName> 
     <Price>200</Price>  
    </TableOne> 
    </DataSet> 
</Object> 

рассматривает

Chong

+0

Ваш рейтинг принимает довольно низко. Я вижу в некоторых других вопросах, у вас есть, что кажется правильными ответами, но не принимало их как таковые. Я ошибаюсь? –

ответ

1

как XML не очень хорошо форматировать не представляется возможным использовать DOM парсер. Так что вы можете манипуляция строка

string fileContent = System.IO.File.ReadAllText(@"sample.xml"); 
     int firstIndex = fileContent.IndexOf("<DataSet>", 0); 
     int lastIndex = fileContent.IndexOf("</DataSet>", firstIndex); 
     string data = fileContent.Substring(firstIndex + "<DataSet>".Length, lastIndex - firstIndex - "<DataSet>".Length); 

Содержание данных набора данных часть

1

Некоторые вещи, как это? (Где xmlTest является строка, содержащая ваш XML)

 XmlDocument doc = new XmlDocument(); 
     // Get the Xml 
     doc.LoadXml(xmlTest); 
     // Get your DataSet Node 
     XmlNode node = doc.SelectSingleNode("Object/DataSet"); 
     DataSet ds = new DataSet(); 
     // Read your node 
     ds.ReadXml(new StringReader(node.OuterXml)); 
     // Read your daat 
     string value = ds.Tables["TableOne"].Rows[0]["ItemID"]; 
+0

Если вы загружаете неформованный xml .. doc.LoadXml (xmlTest); будет генерировать исключение – Mahantesh

+0

Если вы загружаете неформатированный xml, у вас может не быть узла DataSet. Но вы правы, исключение должно быть ручкой. – kerrubin

+0

В вышеуказанном вопросе он упомянул, что его xml-контент не соответствует формату. – Mahantesh

1

Вы можете использовать некоторые вещи, как это:

XmlTextReader xmlreader = new XmlTextReader(strfilename); 
xmlreader.ReadToFollowing("sometext"); 
xmlreader.ReadToDescendant("textundersometext"); 
Смежные вопросы