none
XML string RRS feed

  • Pergunta

  • Estou em web service recebendo um "xml" mas nao se trata exatamente uma xml... é um xml que foi convertido para string...
    Eu tenho um retorno do webserivce da seguinte forma

    <nomeCliente>

                <nrpedido>999</nrpedido>

    <nrpedido>999</nrpedido>

    <nrpedido>999</nrpedido>

    </nomeCliente>

    String

    Eu preciso ler todos os pedidos mas nao sei como "converter para xml" e ler os parametros... se alguem souber ou tiver indicaçao de algum tutorial bom.... vb.net

    Obrigado desde ja
    segunda-feira, 14 de maio de 2007 13:27

Respostas

  •  

    Olá Under,

     

    Para baixar um xml e abstratar ele na aplicação sugiro o seguinte:

     

    dê um Imports pra usar xml na classe que usará o objeto

     

    Code Snippet
    Imports System.Xml

     

     

     

    Depois Crie uma String para armazenar o caminho do seu Xml, nela você pode chamar o seu webservice que retorna esses valores:

     

    Ex:

     

    Code Snippet
    Dim LocalXmlString As String = MeuWebService(parametros)

     

     

    Para controlar o Xml use:

     

    Code Snippet

    Dim loNode As XmlNode

    Dim loXmlDoc As New XmlDocumment

    loXmlDoc.LoadXml(LocalXmlString) 'Adiciona o Xml ou caminho do Xml

    loNode = loXmlDoc.SelectSingleNode("//nomeCliente/nrpedido[1]") 'Seleciona o primeiro nó nrpedido

    loNode = loXmlDoc.SelectSingleNode("//nomeCliente/nrpedido[2]") 'Seleciona o segundo nó nrpedido

    loNode = loXmlDoc.SelectSingleNode("//nomeCliente/nrpedido[3]") 'Seleciona o terceiro nó nrpedido

    Dim ValorString As String = loNode.Value 'Adiciona o valor a uma String

    loNode = Nothing

    loXmlDoc = Nothing

     

     

    Espero ter ajudado..

    terça-feira, 1 de abril de 2008 13:21

Todas as Respostas

  • Bom dia.

    E se nós criarmos um XMLDocument e adicionarmos a ele alguns nós???

    Então o valor de cada nós seriam os valores vindo da string. Para capturar os valores, podiamos pegar a string e separá-la pela palavra "<nrpedido>" e capturar todos os caracteres apos essa coincidência, até localizar os caracteres "</" que indicam o termino do nó.

    O único problema é que não podemos utilizar o Split para separar e localizar os valores, ou seja, você vai ter que varrer caracter a caractrer e, quando localizar um "<", comece a salvar cada caracter em uma string até que seja localizado o caracter ">".

     

    Vou dar uma brévia em pseudocode:

     

    string xml = "<nomeCliente><nrpedido>999</nrpedido><nomeCliente>";

    string palavraChave = "";

    string auxValorNo = "";

    int valorNo = 0;

    XMLDocument = new XMLDocument();

     

    Para todo caracter "C" dentro de "xml" faça

       Se "C" == "<" então

          palavraChave += "C"

             Se palavraChave = "<nrpedido>" então

                  Enquanto xml.ProximoCaracter <> "<"

                     auxValorNo += xml.ProximoCaracter

                  Fim enquanto

                  valorNo = Convert.Int32( auxValorNo )

                  XMLDocument.Node.Add("Nome", valorNo)

             Fim Se

       Fim Se

    Fim Para

     

     

    Algo assim. Entendeu?

    Espero ter ajudado, ou pelo menos, dado uma luz.


    Abraço

    terça-feira, 15 de maio de 2007 11:52
  • Code Snippet

    Dim xDoc as new System.Xml.XmlDocument()
    xDoc.LoadXml(stringDoXml)

    Dim node as XmlNode = xDoc.FirstChild     //Acessa o primeiro filho
    Dim valor as String = node.Value                  //retorna o valor contido no node
    node = node.NextSibling;                             // Próximo node, ou próximo filho
    node = node.PreviousSibling;                       // Node anterior, ou filho anterior
    node = node.ParentNode                            // Retorna o pai  do node



    ...existem outras diversas propriedades e métodos para navegação



    Espero ter ajudado.

    Atenciosamente,
    quarta-feira, 11 de julho de 2007 22:26
  • Muito bom, complementando ...

     

    http://msdn2.microsoft.com/en-us/library/system.xml.xmlnode.haschildnodes.aspx

    http://www.thescripts.com/forum/thread471305.html

     

     

    For Each objMenuNode In objmenuItemNodeList
    If (checkChildMenuItems(objMenuNode)) Then
    Dim objSubMenuNode As System.Xml.XmlNode =
    objDoc.CreateNode(System.Xml.XmlNodeType.Element, "subMenu", "")
    menuitems = menuItemsArrayList(objMenuNode)
    For counter = 0 To menuitems.Count - 1

    objSubMenuNode.AppendChild(DirectCast(menuitems(co unter), XmlNode))
    Next
    objMenuNode.AppendChild(objSubMenuNode)
    End If
    Next

    ************************************************** *******************************************
    Private Function checkChildMenuItems(ByVal sampleNode As XmlNode) As Integer
    Dim returnvalue As Boolean
    Dim i As Integer
    returnvalue = False
    For i = 0 To sampleNode.ChildNodes.Count - 1
    If (sampleNode.ChildNodes(i).Name) = "menuItem" Then
    returnvalue = True
    Exit For
    End If
    Next
    checkChildMenuItems = returnvalue
    End Function

    ************************************************** *********************************************
    Private Function menuItemsArrayList(ByVal sampleNode As XmlNode) As
    ArrayList
    Dim returnvalue As New ArrayList
    Dim i As Integer
    For i = 0 To sampleNode.ChildNodes.Count - 1
    If (sampleNode.ChildNodes(i).Name) = "menuItem" Then
    returnvalue.Add(sampleNode.ChildNodes(i))
    End If
    Next
    menuItemsArrayList = returnvalue
    End Function

    http://www.topxml.com/system_xml/system_xml_xmlnodelist.asp

     

    Example (VB.NET): How to retrieve and filter an XMLNodeList using XPath and the XmlDocument.SelectNode method.

    In the following example, we retrieve an XMLNodeList using the XMLDocument.SelectNode method. We apply an XPath statement that filters the resulting node list according to criteria based on the parent element name.

            Dim objDocument As New System.Xml.XmlDocument

            Dim objXmlNodeList As System.Xml.XmlNodeList

            Dim objXmlNode As System.Xml.XmlNode

            objDocument.LoadXml("<sampleElement1><sampleElement2>We are demonstrating XML nodes.</sampleElement2><sampleElement3>This example uses an XPath expression to filter nodes.</sampleElement3></sampleElement1>")

            objXmlNodeList = objDocument.SelectNodes("/sampleElement1/*")

            For Each objXmlNode In objXmlNodeList

                TextBox1.Text &= objXmlNode.InnerText & CrLf

            Next

    Example (VB.NET): How to retrieve an XMLNodeList and display properties from its XMLNodes.

    In this next example, we use an XMLNodeList to display properties of the list's XMLNode members. We use the XMLNode.ChildNodes property to represent the retrieved nodes, and then display the XMLNode.InnerText, XMLNode.Name, and XMLNode.OuterXml property values.

            Dim objDocument As New System.Xml.XmlDocument

            Dim objXmlNodeList As System.Xml.XmlNodeList

            Dim objXmlNode As System.Xml.XmlNode

            objDocument.LoadXml("<sampleElement1><sampleElement2>Sample Value 1</sampleElement2><sampleElement3>Sample Value 2</sampleElement3></sampleElement1>")

            objXmlNode = objDocument.DocumentElement

            objXmlNodeList = objXmlNode.ChildNodes

            For Each objXmlNode In objXmlNodeList

                TextBox1.Text &= objXmlNode.Name & CrLf

                TextBox1.Text &= "objXmlNode.InnerText = " & objXmlNode.InnerText & CrLf

                TextBox1.Text &= "objXmlNode.OuterXml = " & objXmlNode.OuterXml & CrLf

                TextBox1.Text &= "objXmlNode.ParentNode.Name = " & objXmlNode.ParentNode.Name & CrLf & CrLf

            Next

    quarta-feira, 27 de fevereiro de 2008 18:15
  •  

    Olá Under,

     

    Para baixar um xml e abstratar ele na aplicação sugiro o seguinte:

     

    dê um Imports pra usar xml na classe que usará o objeto

     

    Code Snippet
    Imports System.Xml

     

     

     

    Depois Crie uma String para armazenar o caminho do seu Xml, nela você pode chamar o seu webservice que retorna esses valores:

     

    Ex:

     

    Code Snippet
    Dim LocalXmlString As String = MeuWebService(parametros)

     

     

    Para controlar o Xml use:

     

    Code Snippet

    Dim loNode As XmlNode

    Dim loXmlDoc As New XmlDocumment

    loXmlDoc.LoadXml(LocalXmlString) 'Adiciona o Xml ou caminho do Xml

    loNode = loXmlDoc.SelectSingleNode("//nomeCliente/nrpedido[1]") 'Seleciona o primeiro nó nrpedido

    loNode = loXmlDoc.SelectSingleNode("//nomeCliente/nrpedido[2]") 'Seleciona o segundo nó nrpedido

    loNode = loXmlDoc.SelectSingleNode("//nomeCliente/nrpedido[3]") 'Seleciona o terceiro nó nrpedido

    Dim ValorString As String = loNode.Value 'Adiciona o valor a uma String

    loNode = Nothing

    loXmlDoc = Nothing

     

     

    Espero ter ajudado..

    terça-feira, 1 de abril de 2008 13:21