studio reales proyectos programacion libro introducción incluye herramientas fundamentos fuente español código con avanzado aplicaciones xml excel-vba xml-parsing xmldom

xml - reales - libro de android studio en español pdf



Cómo analizar un archivo XML y escribir datos y luego guardarlo (1)

Aquí hay un código que puede ayudarlo a comenzar

Dim doc As DOMDocument Set doc = New DOMDocument doc.Load "C:/x.xml" Dim Variables As IXMLDOMNodeList Dim variable As IXMLDOMNode Set Variables = doc.SelectNodes("/Environment/Variable") For Each variable In Variables Debug.Print variable.SelectNodes("Caption").Item(0).Text Debug.Print variable.SelectNodes("Type").Item(0).Text Next

Para que funcione, seleccione Herramientas - Referencias y seleccione Microsoft XML v6.0. Hay muchas maneras de resolver esto, pero XPath (el lenguaje utilizado en SelectNodes) es muy bueno para saber en casos como este.

Estoy trabajando en algo como lo siguiente:

  1. Una hoja de Excel con algunas celdas donde se le pide al usuario final que ingrese los valores requeridos; hecho
  2. Código que lee los valores ingresados ​​en estas celdas por los usuarios finales;
  3. Cargue un archivo XML; hecho
  4. Analizar y luego escribir los valores recuperados de las celdas de Excel en un archivo XML (siguiendo una regla) y luego guardarlo; Estoy atrapado aquí!
  5. Inicie mi aplicación (otra secuencia de comandos utilizará los valores del archivo XML más adelante).

Simplificaré tanto como sea posible:

El archivo de Excel será como el siguiente ejemplo ...

CellA CellB 1 T1 V1 2 T2 V2 3 T3 V3 4 T4 V4 5 T5 V5 6 T6 V6

"T" se refiere al título. El usuario final ingresará los valores V1, V2, ... V6

El archivo XML está estructurado así:

<?xml version="1.0" encoding="UTF-8" standalone="no"?> <Environment> <Variable> <Name></Name> <Caption>T1</Caption> <Type>TEXT</Type> <Value>V1</Value> <Description></Description> </Variable> <Variable> <Name></Name> <Caption>T2</Caption> <Type>TEXT</Type> <Value>V2</Value> <Description></Description> </Variable> <Variable> <Name></Name> <Caption>T3</Caption> <Type>TEXT</Type> <Value>V3</Value> <Description></Description> </Variable> <Variable> <Name></Name> <Caption>T4</Caption> <Type>TEXT</Type> <Value>V4</Value> <Description></Description> </Variable> <Variable> <Name></Name> <Caption>T5</Caption> <Type>TEXT</Type> <Value>V5</Value> <Description></Description> </Variable> </Variable> <Variable> <Name></Name> <Caption>T6</Caption> <Type>TEXT</Type> <Value>V6</Value> <Description></Description> </Variable> </Environment>

Como puede ver, necesito analizar este archivo e ingresar valores (V1 .... V6) con referencia a cada uno.

Debajo está mi código de VBA hasta la línea donde estoy atrapado:

''Option Explicit Private Sub RunTest_Click() Dim envFrmwrkPath As String Dim ApplicationName As String Dim TestIterationName, ServerIp, Login, Password, TraderLiteLogPath As String Dim objfso, app, Eval As Object Dim i, Msgarea`enter code here` Dim EnvVarXML As MSXML2.DOMDocument60 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''these are added when trying to find a way to parse the xml --- you can change them Dim Variable As MSXML2.IXMLDOMNode ''Dim oAttributes As MSXML.IXMLDOMNamedNodeMap Dim ORoot As MSXML2.IXMLDOMNode Dim objUIElement As MSXML2.IXMLDOMElement Dim OChildren As MSXML2.IXMLDOMNodeList Dim OChild As MSXML2.IXMLDOMNode Dim OVariable As MSXML2.IXMLDOMNode Dim OAttributes As MSXML2.IXMLDOMNamedNodeMap ''Dim objUIElement As Object Dim field As Object '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''load Env Variables from Excel ApplicationName = ActiveSheet.Range("E4").Value envFrmwrkPath = ActiveSheet.Range("E6").Value TestIterationName = ActiveSheet.Range("E8").Value ServerIp = ActiveSheet.Range("E10").Value Login = ActiveSheet.Range("E12").Value Password = ActiveSheet.Range("E14").Value TraderLiteLogPath = ActiveSheet.Range("E16").Value ''load xml file Set objParser = CreateObject("Microsoft.XMLDOM") Set EnvVarXML = New MSXML2.DOMDocument60 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''test_load ''''''''''''''''''''''''''''''----------------------------------------------------- ''Set EnvVarXML = CreateObject("Microsoft.XMLDOM") ''Set EnvVarXML = New MSXML2.DOMDocument60 ''If EnvVarXML.Load(envFrmwrkPath & "/Environment/EnvVar.xml") Then '' for debug only ''MsgBox "file loaded correctly", vbOKOnly '' for debug only ''Else '' for debug only ''MsgBox "file not loaded", vbcrtical '' for debug only ''End If ''''''''''''''''''''''''''''''----------------------------------------------------- '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''load xml file EnvVarXML.Load (envFrmwrkPath & "/Environment/EnvVar.xml") ''parse file and change values ''''''the following may have no sense for an experiment one of you Set ORoot = EnvVarXML.DocumentElement For Each OVariable In ORoot.ChildNodes Set OAttributes = OVariable.Attributes Set OChildren = OVariable.ChildNodes ''''''deleted many lines as found no way '''''''''''''' Set EnvVarXML = Nothing Next EnvVarXML.Save (envFrmwrkPath & "/Environment/EnvVar.xml")