Título: XmlDocument.LoadXml ¿Porque no me funciona?
Publicado por: Eleкtro en 18 Diciembre 2012, 20:43 pm
- ¿Porque no me funciona? - ¿Y se puede cargar un archivo xml local sin setearlo en un string? Imports System.Xml Imports System.Xml.Serialization Imports System.IO Public Class Form1 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim rawXML As String = _ "<Company>" & _ " <Employee>" & _ " <name>John</name>" & _ " <Id>1</Id>" & _ " <email>John@xxxxxx.com</email>" & _ " </employee>" & _ " <employee>" & _ " <name>Sue</name>" & _ " <Id>2</Id>" & _ " <email>Sue@xxxxxx.com</email>" & _ " </employee>" & _ "</Company>" Dim xmlDoc As New XmlDocument Dim employeeNodes As XmlNodeList Dim employeeNode As XmlNode Dim baseDataNodes As XmlNodeList Dim bFirstInRow As Boolean MsgBox("A") xmlDoc.LoadXml(rawXML) ' Este msgbox no se llega a ver MsgBox("B") employeeNodes = xmlDoc.GetElementsByTagName("name") For Each employeeNode In employeeNodes baseDataNodes = employeeNode.ChildNodes bFirstInRow = True For Each baseDataNode As XmlNode In baseDataNodes If (bFirstInRow) Then bFirstInRow = False Else MsgBox(", ") End If MsgBox(baseDataNode.Name & ": " & baseDataNode.InnerText) Next Next End Sub End Class
Título: Re: XmlDocument.LoadXml ¿Porque no me funciona?
Publicado por: Novlucker en 18 Diciembre 2012, 22:17 pm
Vuelve a probar así ... Imports System.Xml Imports System.Xml.Serialization Imports System.IO Public Class Form1 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim rawXML As String = _ "<Company>" & _ " <Employee>" & _ " <name>John</name>" & _ " <Id>1</Id>" & _ " <email>John@xxxxxx.com</email>" & _ " </employee>" & _ " <employee>" & _ " <name>Sue</name>" & _ " <Id>2</Id>" & _ " <email>Sue@xxxxxx.com</email>" & _ " </employee>" & _ "</Company>" Dim xmlDoc As New XmlDocument Dim employeeNodes As XmlNodeList Dim employeeNode As XmlNode Dim baseDataNodes As XmlNodeList Dim bFirstInRow As Boolean MsgBox("A") Try xmlDoc.LoadXml(rawXML) Catch ex As Exception End Try ' Este msgbox no se llega a ver MsgBox("B") employeeNodes = xmlDoc.GetElementsByTagName("name") For Each employeeNode In employeeNodes baseDataNodes = employeeNode.ChildNodes bFirstInRow = True For Each baseDataNode As XmlNode In baseDataNodes If (bFirstInRow) Then bFirstInRow = False Else MsgBox(", ") End If MsgBox(baseDataNode.Name & ": " & baseDataNode.InnerText) Next Next End Sub End Class
Para cargarlo desde un archivo puedes utilizar Load en lugar de LoadXmlSaludos
Título: Re: XmlDocument.LoadXml ¿Porque no me funciona?
Publicado por: Eleкtro en 18 Diciembre 2012, 22:30 pm
Nada Nov, no quiere funcionar... no me salta ninguna excepción. Lo de "Load" lo había visto pero como me decía que era para una URL... xD lo he intentado con load y la app se cuelga en donde la excepción, pero no me manda ningún error, juas. EDITO: Vale, ahora sí me salta excepción... "There are multiple root elements. Line 2, position 2." ¿Porque me dice que hay multiples elementos, si en teoría de lo que se trata es de obtener multiples elementos del mismo TagName xD? Try xmlDoc.Load("C:\t.xml") Catch ex As Exception MessageBox.Show(ex.Message) End Try
t.xml: <name>1</name> <name>2</name> <name>3</name> <name>4</name>
Título: Re: XmlDocument.LoadXml ¿Porque no me funciona?
Publicado por: Novlucker en 18 Diciembre 2012, 22:51 pm
Si pones un punto de interrupción en la línea 32 del código que te he dejado ves la excepción, que de hecho he marcado más arriba, tu nodo comienza con Employee y termina con employee. Sobre tu segundo error, los XML tienen que tener un solo nodo raíz.
Saludos
|