Visual Basic - Leer XML de Orden de Pedidos

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil

Leer XML de Orden de Pedidos

Publicado por Daniel (6 intervenciones) el 28/05/2018 15:52:39
Hola al foro, necesito saber como se hace para leer de un XML, si tengo varias ordenes de compra y cada una de ellas varios productos, como hacer para obtener los productos de cada orden de compra.
Por ejemplo de la orden de compra "255013" necesito saber los productos y la cantidad pedida.
También de la orden "255021" cada producto pedido.

Muchas gracias si alguien me puede dar un ejemplo o una pista de como hacerlo.
Este sería un ejemplo.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?xml version="1.0" encoding="UTF-8" ?>
- <Principal>
- <Order>
  <creationDateTime>2018-05-24 11:15</creationDateTime>
  <documentStatusCode>ORIGINAL</documentStatusCode>
- <orderIdentification>
  <entityIdentification>255013</entityIdentification>
  </orderIdentification>
  <orderTypeCode>220</orderTypeCode>
- <orderLineItem>
  <lineItemNumber>1</lineItemNumber>
  <requestedQuantity measurementUnitCode="EA">12</requestedQuantity>
  <gtin>1234</gtin>
  </orderLineItem>
- <orderLineItem>
  <lineItemNumber>2</lineItemNumber>
  <requestedQuantity measurementUnitCode="EA">36</requestedQuantity>
  <gtin>2345</gtin>
  </orderLineItem>
- <orderLineItem>
  <lineItemNumber>3</lineItemNumber>
  <requestedQuantity measurementUnitCode="EA">24</requestedQuantity>
  <gtin>4567</gtin>
  </orderLineItem>
  </Order>
- <Order>
  <creationDateTime>2018-05-24 11:15</creationDateTime>
  <documentStatusCode>ORIGINAL</documentStatusCode>
- <orderIdentification>
  <entityIdentification>255021</entityIdentification>
- <contentOwner>
  <gln>1111</gln>
  </contentOwner>
  </orderIdentification>
  <orderTypeCode>220</orderTypeCode>
- <orderLineItem>
  <lineItemNumber>1</lineItemNumber>
  <requestedQuantity measurementUnitCode="EA">3</requestedQuantity>
  <gtin>2233</gtin>
  </orderLineItem>
- <orderLineItem>
  <lineItemNumber>2</lineItemNumber>
  <requestedQuantity measurementUnitCode="EA">5</requestedQuantity>
  <gtin>4455</gtin>
  </orderLineItem>
- <orderLineItem>
  <lineItemNumber>3</lineItemNumber>
  <requestedQuantity measurementUnitCode="EA">5</requestedQuantity>
  <gtin>6677</gtin>
  </orderLineItem>
- <orderLineItem>
  <lineItemNumber>4</lineItemNumber>
  <requestedQuantity measurementUnitCode="EA">5</requestedQuantity>
  <gtin>7788</gtin>
  </orderLineItem>
  </Order>
  </Principal>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 109
Ha aumentado 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Leer XML de Orden de Pedidos

Publicado por Yamil Bracho (226 intervenciones) el 28/05/2018 16:18:46
Puede ser algo como

1
2
3
4
5
6
7
8
Dim doc As New XmlDocument()
do.LoadXml(xmlString);
 
Dim elemList As XmlNodeList = doc.GetElementsByTagName("order")
Dim i As Integer
For i = 0 To elemList.Count - 1
    Console.WriteLine(elemList(i).InnerXml)
Next i
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Leer XML de Orden de Pedidos

Publicado por Daniel (6 intervenciones) el 28/05/2018 16:38:05
No, lo que necesito es que me traiga:

por cada <entityIdentification> solo los productos <gtin> de esa orden, NO todos los productos, no sé si soy claro.

Ademas con ese código me da errores en Vb6.
Gracias igual!.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Andres Leonardo
Val: 3.117
Oro
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Leer XML de Orden de Pedidos

Publicado por Andres Leonardo (1798 intervenciones) el 28/05/2018 17:30:26
Checa esto que me ayudo en algun momento


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Private Sub Command1_Click()
 
Dim FicheroXML As String
FicheroXML= "C:\Ejemplo.xml"
Dim oXML As New DOMDocument
oXML.Load sXmlFile
If oXML.parseError.reason <> "" Then
   MsgBox oXML.parseError.reason
   Exit Sub
End If
 
Dim oNode As IXMLDOMNode
Dim oAttr As IXMLDOMAttribute
 
For Each oNode In oXML.documentElement.childNodes
   Set oAttr = oNode.Attributes.getNamedItem("vconfirm")
   MsgBox oNode.nodeName & ": " & _
   oNode.Text
Next oNode
 
End Sub
 
'También puedes obtener el valor de un nodo en concreto:
 
Set oNode = oXML.selectSingleNode("//NODO//VALOR")
If Not oNode Is Nothing Then
   valorBuscado = oNode.Text
End If
Set oNode = oXML.selectSingleNode("//NODO//VALOR") te devuelve el nodo hijo VALOR dentro del nodo NODO. Por ejemplo si quieres obtener el valor del subnodo NOMBRE dentro del nodo DATOS harías:

Set oNode = oXML.selectSingleNode("//DATOS//NOMBRE")

msgbox oNode.


Este lo saque del siguiente link a mi me ayudo hace algun tiempo


https://social.msdn.microsoft.com/Forums/es-ES/c32f0a49-7381-49d8-9ca6-197d6946c745/obtener-informacin-de-un-archivo-xml-desde-visual-basic-6?forum=vb56es
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Leer XML de Orden de Pedidos

Publicado por Daniel (6 intervenciones) el 28/05/2018 19:57:28
Gracias por la respuesta Andres, pero eso ya lo tengo.
Lo que necesito es acceder a los Productos de cada Orden de Compra.
Por ejemplo, por cada "entityIdentification" que encuentro, tengo que encontrar todos los productos relacionados con ESE identificador, con los ejemplos que me han dado accedo a todos, y eso no me sirve.
O sea que supongo que necesito DOS bucles, uno que recorra los Nros de Orden de Compra "entityIdentification", y otro bucle que me recorra los Productos "gtin" de esa Orden de Compra.

Muchas gracias igual, si alguien sabe como se hace y lo puede escribir lo agradezco.
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Andres Leonardo
Val: 3.117
Oro
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Leer XML de Orden de Pedidos

Publicado por Andres Leonardo (1798 intervenciones) el 29/05/2018 20:47:39
Primer avance
con esto llego a las ordenes, y sus items... ahora deberia acceder un nivel mas,.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Private Sub Command1_Click()
 
 Dim doc As New MSXML2.DOMDocument30
   Dim success As Boolean
 
   success = doc.Load("C:\x.xml")
   If success = False Then
      MsgBox doc.parseError.reason
   Else
      Dim nodeList As MSXML2.IXMLDOMNodeList
      Set nodeList = doc.selectNodes("Principal/Order")
      If Not nodeList Is Nothing Then
         Dim node, nodo As MSXML2.IXMLDOMNode
         Dim name As String
         Dim value As String
         For Each node In nodeList
            For i = 0 To node.childNodes.length - 1
            Dim N As MSXML2.IXMLDOMNode
                    MsgBox node.childNodes(i).nodeName & ": " & node.childNodes(i).Text
                End If
            Next i
            c = c + 1
          Next node
      End If
   End If
   MsgBox c
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Leer XML de Orden de Pedidos

Publicado por Daniel (6 intervenciones) el 29/05/2018 20:54:35
Hola Andres, mañana lo pruebo en el trabajo y te aviso. Muchas gracias por ahora!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar