2009-11-30 6 views
0

J'ai chargé un fichier xml dans un dataset avec succès (je peux l'afficher dans un DataGrid), je voudrais le charger dans plusieurs zones de texte (environ 10 ou 12). Le XML a environ 60 champs, et je ne suis pas familier avec l'obtention de leurs noms (même si je sais lesquels je veux).Mettre des champs de dataset dans des zones de texte

c'est ce que j'ai:

Dim ds As New DataSet 
ds.ReadXml(<PATH>) 

un aperçu d'une partie du xml:

<ide> 
<cUF>35</cUF> 
<cNF>623670848</cNF> 
</ide> 
<emit> 
<CNPJ>06949571000153</CNPJ> 
<xFant>TSA</xFant> 

je veux (exemple)
CUF de IDE
cFant de tsa

J'ai txt1 et txt2 comme zones de texte, que puis-je faire pour les obtenir?

Répondre

1

Si vous avez les données dans un jeu de données, vous pouvez obtenir l'information de plusieurs façons. Il y a la façon dont la chair est recommandée pour la lire directement à partir du XML, et il y a la méthode table/ligne/colonne pour l'extraire de l'ensemble de données.

Si vous connaissez les noms de colonnes au moment de la conception:

Théorie:

txt1.Text = DS.Tables[<tablename>].Rows[<rowID>].ItemArray[<ColumnIndex>].ToString(); 

Pratique:

txt1.Text = DS.Tables["ide"].Rows[0].ItemArray[0].ToString(); 

Si vous ne connaissez pas les noms de colonnes au moment de la conception:

Théorie:

txt1.Text = DS.Tables(<tableID>).Rows(<rowID>).Item(<ColumnID>) 

Pratique:

txt1.Text = DS.Tables[0].Rows[0].ItemArray[0].ToString(); 

prudent en utilisant les chiffres indexés mais ... parfois ils peuvent vous causer des problèmes.

+0

quel genre de problème? comme obtenir un type différent de xml et d'afficher le mauvais sens? – Marcelo

+0

exactement. Nous avons modifié par inadvertance l'ordre des colonnes sur le serveur SQL avant. Cela va changer l'ordre des index des colonnes et nécessiter un recodage. Certains systèmes de SGBD renverront des données dans l'ordre indiqué par les colonnes de votre requête, d'autres renverront les colonnes dans l'ordre spécifié en interne ... alors gardez un œil sur des problèmes comme celui-ci lorsque vous travaillez avec l'index des colonnes. – Jrud

1

Jetez un oeil un l'espace de noms System.XML, puis faire quelque chose comme cela, en utilisant une expression XPath correcte dans la fonction SelectSingleNode():

private XmlDocument _doc = new XmlDocument(); 
_doc.Load(HttpContext.Current.Request.MapPath("~/yourdocpath.xml")); 
XmlNode n = _doc.SelectSingleNode("ide/cuf"); 

puis pour définir la zone de texte:

txt1.Text = n.InnerText; 
Questions connexes