Создание файла XML из сценария

Недавно у меня появилась причина включить в наш сценарий сборки создание файла конфигурации XML. Самый простой способ, который я могу придумать, - это жестко закодировать содержимое XML в виде строки в сценарии, а затем просто создать файл и записать эту строку XML в файл (названный соответствующим образом и т. д.). Есть ли более элегантный или эффективный способ сделать это?

Сценарий сборки, который я хочу изменить, написан на VBScript.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
1 528
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Очень важно прочитать, если вы рассматриваете строки: КАК ИЗБЕЖАТЬ, что вас называют бозо при создании XML

Ответ принят как подходящий

вы можете использовать XmlWriter, чтобы избежать печати строк. Это значительно упростит написание правильно сформированных XML-документов.

Вы можете найти бесплатный образец кода на VBScript здесь

http://www.matthewflickinger.com/lab/xmlwriter/

Мое окончательное решение: адаптировал XMLWriter, упомянутый divo (использовал его почти как есть, за исключением одного или двух изменений, поскольку этот сценарий должен запускаться на клиенте). Также адаптировал код из здесь для красивой печати XML (чтобы его можно было читать при выводе в файл):

Function XMLToString(Nodes)
  dim retStr
  retStr = "<?xml version = ""1.0"" encoding = ""utf-8"" ?>"
  XMLToString = retStr & vbNewLine & NodesToString(Nodes, 0)
End Function

Function NodesToString(Nodes, Indent)
   Dim xNode
   Dim retStr

   retStr = ""
   For Each xNode In Nodes
      Select Case xNode.nodeType
        Case 1:   ' NODE_ELEMENT
          If xNode.nodeName <> "#document" Then
            ' change DisplayAttrs_(xNode, Indent + 2) to 
            ' DisplayAttrs_(xNode, 0) for inline attributes
            retStr = retStr & VBNewLine & strDup(" ", Indent)  & "<" & xNode.nodeName & AttributesToString(xNode) & ">"
            If xNode.hasChildNodes Then
              retStr = retStr & NodesToString(xNode.childNodes, Indent + 2)
            End If
            retStr = retStr & VBNewLine & strDup(" ", Indent) & "</" & xNode.nodeName & ">"
          Else 
            If xNode.hasChildNodes Then
              retStr = retStr & NodesToString(xNode.childNodes, Indent + 2)
            End If
          End If
        Case 3:   ' NODE_TEXT                       
          retStr = retStr & VBNewLine & strDup(" ", Indent) & xNode.nodeValue
      End Select
   Next

   NodesToString = retStr
End Function

Function AttributesToString(Node)
   Dim xAttr, res

   res = ""
   For Each xAttr In Node.attributes
        res = res & " " & xAttr.name & " = """ & xAttr.value & """"
   Next

   AttributesToString = res
End Function

Function strDup(dup, c)
  Dim res, i

  res = ""
  For i = 1 To c
    res = res & dup
  Next
  strDup = res
End Function

Другие вопросы по теме