Некоторые проблемы при использовании DataSet.ReadXML - PullRequest
1 голос
/ 05 января 2011

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

<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>

regards

Chong

Ответы [ 3 ]

1 голос
/ 05 января 2011

Что-то подобное?(где 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"];
1 голос
/ 06 апреля 2012

Вы можете использовать что-то вроде этого:

XmlTextReader xmlreader = new XmlTextReader(strfilename);
xmlreader.ReadToFollowing("sometext");
xmlreader.ReadToDescendant("textundersometext");
1 голос
/ 05 января 2011

, поскольку формат 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);  

Данные содержат часть вашего набора данных

...