WedX - журнал о программировании и компьютерных науках

Как проанализировать файл XML и записать данные, а затем сохранить их

Я работаю над чем-то вроде следующего:

  1. Лист Excel с несколькими ячейками, где конечному пользователю предлагается ввести необходимые значения; Выполнено
  2. Код, который считывает значения, введенные в эти ячейки конечными пользователями;
  3. Загрузите файл XML; Выполнено
  4. Проанализируйте его, а затем запишите значения, полученные из ячеек Excel, в файл XML (следуя правилу), а затем сохраните его; Я застрял здесь!
  5. Запустите мое приложение (позже другой скрипт будет использовать значения XML-файла).

Максимально упрощу:

Файл Excel будет похож на следующий пример...

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

«Т» относится к названию. Конечный пользователь введет значения V1, V2, ... V6.

XML-файл имеет следующую структуру:

<?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>

Как видите, мне нужно разобрать этот файл и ввести значения (V1....V6) для каждого из них.

Ниже мой код VBA до строки, в которой я застрял:

'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")

Ответы:


1

Вот некоторый код, который может помочь вам начать работу

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

Чтобы это заработало, выберите «Инструменты» — «Ссылки» и выберите «Microsoft XML v6.0». Есть много способов решить эту проблему, но XPath (язык, используемый в SelectNodes) очень полезно знать в подобных случаях.

31.01.2014
  • Тип DOMDocument является синонимом DOMDocument30 из Microsoft XML версии 3.0. К сожалению, языком выбора по умолчанию для этого является не XPath, а XSLPatterns. DOMDocument60 здесь является лучшим выбором типа, и XPath используется в качестве языка запросов по умолчанию. Подробности: здесь 01.02.2014
  • Конечно, 6.0 — лучший выбор, но вы можете добавить XPath к старой версии 3.0, используя этот код: Doc.setProperty SelectionLanguage, XPath 15.09.2017
  • Новые материалы

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


    Для любых предложений по сайту: [email protected]