2011-01-05 5 views
1

Ich möchte mit Dataset.Readxml einige Daten aus XML-Datei abrufen. Aber, mein XML-Format ist nicht gut Format, ein Teil ist für Dataset und ein anderer Teil für andere dinge.so, wie Ich erhalte den Datasetpart. Ich entwickle in C# .net 2008.xml Dateiformat ist wie folgt.Einige Probleme bei der Verwendung von 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> 

Grüße

Chong

+0

Ihre akzeptieren Bewertung recht niedrig ist. Ich sehe in einigen anderen Fragen, dass Sie die richtigen Antworten haben, aber sie nicht als solche akzeptiert haben. Täusche ich mich? –

Antwort

1

als XML nicht gut formatiert ist es nicht möglich ist, den DOM-Parser zu verwenden. So können Sie die String-Manipulation

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

Dateninhalt der Dataset Teil

1

Manche Dinge wie das? (Wo XMLTest ist die Zeichenfolge, die 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

Wenn Sie nicht gut formatiert xml laden .. die doc.LoadXml (xmlTest); wird die Ausnahme auslösen – Mahantesh

+0

Wenn Sie nicht gut formatierte XML laden, haben Sie möglicherweise keinen DataSet-Knoten. Aber du hast Recht, Ausnahme muss behandelt werden. – kerrubin

+0

In der obigen Frage hat er erwähnt, dass sein XML-Inhalt nicht gut Format ist. – Mahantesh

1

Sie etwas wie folgt verwenden können:

XmlTextReader xmlreader = new XmlTextReader(strfilename); 
xmlreader.ReadToFollowing("sometext"); 
xmlreader.ReadToDescendant("textundersometext");