Programme VB.net et fichier xml

Signaler
Messages postés
8
Date d'inscription
mercredi 6 avril 2005
Statut
Membre
Dernière intervention
14 avril 2006
-
Messages postés
46
Date d'inscription
dimanche 10 octobre 2004
Statut
Membre
Dernière intervention
13 juin 2008
-
Bonjour,
voila j'ai un fichier xml tres court et un programme vb,
je veux recuperer les infos xml pour les afficher en console, tout simple donc mais je n'y arrive je suis tout novice en vb et la il me plante sur le getattribute en me disant que ca pointe sur un truc nul. A mon avis deux raisons possible, soit mon xml est pas au bon endroit et donc il ne trouve rien normal , soit je m'y prend mal

voila le code de l'xml:

voila le code vb:

Module Module1

Sub Main()



Dim GPNDOM
As MSXML2.DOMDocument40

Dim GPNPartElement
As MSXML2.IXMLDOMElement

Dim GPNpartSymbol

GPNDOM =
New MSXML2.DOMDocument40
GPNDOM.loadXML(
"A200485_20050823_102606.XML")
GPNPartElement = GPNDOM.selectSingleNode(
"PART")
GPNpartSymbol = GPNPartElement.getAttribute(
"symbol")
' >>>>> l'erreur est ici nullpointer exception

System.Console.Out.WriteLine(GPNPartElement)
System.Console.Out.WriteLine(GPNpartSymbol)
System.Console.ReadKey()

End
Sub
End
Module

J'ai placé le fichier xml dans /bin/debug

merci de bien vouloir m'aider
Cordialement
emmanuel

3 réponses

Messages postés
100
Date d'inscription
samedi 11 janvier 2003
Statut
Membre
Dernière intervention
16 juin 2006
1
pouquoi n'utilises tu pas le DataSet ?

dim ds as new DataSet
ds.readXml("tonfichierXML.xml")

et ensuite tu parcours la table de ton Ds.
Messages postés
100
Date d'inscription
samedi 11 janvier 2003
Statut
Membre
Dernière intervention
16 juin 2006
1
Si malgré tout tu veux utiliser les objets XML, utilises ceux standard de .net
System.XML

voici un petit exemple





Dim Doc As New XmlDocument


Doc.Load("temp2.xml")


Dim Root As XmlElement = Doc.DocumentElement


Dim myNodes As XmlNodeList = Doc.SelectNodes("NewDataSet/Table") 'Chemin XPATH





Dim noeud, noeudEnf As XmlNode





For Each noeud In myNodes


For Each noeudEnf In noeud.ChildNodes


MsgBox(noeudEnf.LocalName + " : " + noeudEnf.InnerText)


Next


Next
Messages postés
46
Date d'inscription
dimanche 10 octobre 2004
Statut
Membre
Dernière intervention
13 juin 2008
1
Hello,

J'aimerai aussi importer un fichier XML dans une collection. Je suis comme harrauem. J'ai peu de connaissance dans en XML et aucune sur ce type d'importation (si ce n'est que pour manipuler des xml, il faut utiliser des objets xmlDocument)

ProphetKy, j'ai essayer tes 2 méthodes mais pas réussi.

La première méthode me met l'erreur "L'instance xml fournie est un schéma ou contient un schéma inline. Cette classe ne peut pas déduire un schéma à partir d'un schéma.". Est-ce qu'il y a des fichier xml qui nécessitent des fichiers XSD pour être lus? et quelle est la différence? et comment on fait ça?

Pour la deuxième solution, il ne plante pas, mais ne passe jamais dans la boucle FOR, donc ne détecte aucun noeud... il y a quelque chose que j'ai dû louper...

Mon fichier persons.xml est le suivant :
<?xml version="1.0" encoding="utf-8"?>
<xsd:ArrayOfPerson xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:Person>
    <xsd:Name>Personne N°1</xsd:Name>
    <xsd:PersonId>1</xsd:PersonId>
    <xsd:Sex>70</xsd:Sex>
    <xsd:Adress>
      <xsd:Street>Rue Test 1</xsd:Street>
      <xsd:City>Ville 1</xsd:City>
      <xsd:Number>1</xsd:Number>
      <xsd:Zip>7</xsd:Zip>
    </xsd:Adress>
  </xsd:Person>
  <xsd:Person>
    <xsd:Name>Personne N°2</xsd:Name>
    <xsd:PersonId>2</xsd:PersonId>
    <xsd:Sex>77</xsd:Sex>
    <xsd:Adress>
      <xsd:Street>Rue Test 2</xsd:Street>
      <xsd:City>Ville 2</xsd:City>
      <xsd:Number>2</xsd:Number>
      <xsd:Zip>9</xsd:Zip>
    </xsd:Adress>
  </xsd:Person>
</xsd:ArrayOfPerson>