6
votes

DataSet.Readxml renvoie des caractères non valides dans le chemin. Pourquoi?

Je lis une chaîne dans un DataSet code> à l'aide de la méthode lisexml code>. Lorsque j'essaie de renvoyer des caractères non valides dans l'erreur de chemin. Si je sauvegardez et ouvrez la chaîne dans IE en tant que fichier XML, il jette une erreur sur le codage coding = "utf-16" code> si je suppose que c'est la cause du problème.

Y a-t-il un moyen simple de résoudre ce problème? Ne devrait-il pas être capable de gérer UNICODE ou UTF-16? P>

Toute suggestion serait très appréciée. Utilisation de C # & .NET 4 P>

<?xml version="1.0" encoding="UTF-8" ?> 
 <iCall xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <Rows>
 <Row>
  <Code /> 
  <Title>Test Title</Title> 
  </Row>
  </Rows>
</iCall>


0 commentaires

4 Réponses :


1
votes

Je pense que vous pouvez essayer d'utiliser ReadStartelement pour avancer vers le nœud suivant et lisez la table entière dans DataSet.

XmlTextReader r = new XmlTextReader(@"c:\b.xml");
r.MoveToContent();
r.ReadStartElement("iCall");
DataSet ds = new DataSet();
ds.ReadXml(r);
this.dataGrid1.DataSource = ds;


0 commentaires

20
votes

DataSet.ReadxML (String) attend un chemin de fichier Pas em> un document XML. Il essaie donc d'analyser votre document XML sous forme de filepath et échoue

Si vous n'avez que votre exécution XML, vous pouvez le faire comme suit: P>

StringReader sr = new StringReader(xml);
dataSet.ReadXml(sr);


0 commentaires

0
votes

Ce code exemple corrigera le problème.

XmlDocument layoutXml = new XmlDocument();
layoutXml.Load(MyXmlPath); //file location    

StringReader sr = new StringReader(layoutXml.DocumentElement.OuterXml);

ds.ReadXml(sr);


0 commentaires

2
votes

Il est préférable d'utiliser une ligne supplémentaire xmltextreader xtr = ... et passez xtr à la méthode lisexml. xxx


0 commentaires