Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从脚本生成XML文件_Xml_Performance_Vbscript - Fatal编程技术网

从脚本生成XML文件

从脚本生成XML文件,xml,performance,vbscript,Xml,Performance,Vbscript,我最近有理由在构建脚本中包含XML配置文件的创建。我能想到的最简单的方法是将XML内容硬编码为字符串,然后创建一个文件并将该XML字符串写入该文件(适当命名等)。有没有更优雅或有效的方法 我想修改的生成脚本是用vbScript .< /p> 编写的。如果考虑字符串:非常重要的是:,可以使用XMLWrror来避免打印字符串。这将使编写格式良好的XML文档变得更加容易 您可以在这里的VBScript中找到免费的示例代码 我的最后一个解决方案是:修改了divo提到的XMLWriter(除了一两处更改

我最近有理由在构建脚本中包含XML配置文件的创建。我能想到的最简单的方法是将XML内容硬编码为字符串,然后创建一个文件并将该XML字符串写入该文件(适当命名等)。有没有更优雅或有效的方法


我想修改的生成脚本是用vbScript .< /p> 编写的。如果考虑字符串:非常重要的是:

,可以使用XMLWrror来避免打印字符串。这将使编写格式良好的XML文档变得更加容易

您可以在这里的VBScript中找到免费的示例代码


我的最后一个解决方案是:修改了divo提到的XMLWriter(除了一两处更改之外,基本上就是这样使用的,因为这个脚本要在客户机上运行)。还修改了源代码以打印XML(以便输出到文件时可读):

函数XMLToString(节点)
暗网
retStr=“”
XMLToString=retStr&vbNewLine&NodesToString(节点,0)
端函数
函数NodesToString(节点,缩进)
Dim xNode
暗网
retStr=“”
对于节点中的每个xNode
选择Case xNode.nodeType
案例1:'节点\单元
如果xNode.nodeName为“#文档”,则
'将DisplayAttrs_(xNode,缩进+2)更改为
'显示内联属性的属性属性(xNode,0)
retStr=retStr&VBNewLine&strDup(“,缩进)&”
如果xNode.hasChildNodes,则
retStr=retStr&NodesToString(xNode.childNodes,缩进+2)
如果结束
retStr=retStr&VBNewLine&strDup(“,缩进)&”
其他的
如果xNode.hasChildNodes,则
retStr=retStr&NodesToString(xNode.childNodes,缩进+2)
如果结束
如果结束
案例3:'节点\文本
retStr=retStr&VBNewLine&strDup(“,缩进)&xNode.nodeValue
结束选择
下一个
NodesToString=retStr
端函数
函数属性字符串(节点)
Dim xAttr,res
res=“”
对于Node.attributes中的每个xAttr
res=res&&xAttr.name&&xAttr.value&
下一个
AttributesToString=res
端函数
函数strDup(dup,c)
昏暗的天空,我
res=“”
对于i=1到c
res=res&dup
下一个
strDup=res
端函数
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