vbscript - 用于自动创建文件的 VB 脚本(按需提供机会!)
问题描述
我是一名财务人员,并不完全是 VB 脚本大师,但我想知道是否有人可以根据我的要求创建一个示例 vb 脚本。
谁首先提供解决方案并且解决方案对我有效,将有机会(当然是付费的)在我工作的地方创建更多这些自定义解决方案。这不是全职职位,而是更多的按需机会。
要求:能够读取以逗号分隔并具有各种条目的文本文件
例如,在文本文件中... SEC_E_All_Entities,HSII,SL_DIMENSION,READWRITE,@IDESCENDANTS,N SEC_E_ENT_Americas,Americas,SL_DIMENSION,READ,MEMBER,N
并执行以下...
- 根据第一个值为每个条目创建一个 XML 文件
例如:
创建 SEC_E_All_Entities.XML 和 SEC_E_ENT_Americas.XML
- 在每个文件中,写下您可以看到值如何匹配每个标签的内容。
例如:
在 SEC_E_All_Entities.XML 文件中,写入...
<?xml version="1.0" encoding="UTF-8" ?>
<acls>
<acl>
<name>SEC_E_All_Entities</name>
<objectName>HSII</objectName>
<objectType>SL_DIMENSION</objectType>
<accessMode>READWRITE</accessMode>
<flag>@IDESCENDANTS</flag>
<isUser>N</isUser>
</acl>
</acls>
在 SEC_E_All_Americas.XML 文件中,写入...
<?xml version="1.0" encoding="UTF-8" ?>
<acls>
<acl>
<name>SEC_E_ENT_Americas</name>
<objectName>Americas</objectName>
<objectType>SL_DIMENSION</objectType>
<accessMode>READ</accessMode>
<flag>MEMBER</flag>
<isUser>N</isUser>
</acl>
</acls>
问候,朱迪
解决方案
示例脚本
'Step 1 - Read the file and store the content in memory (an array)
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("C:\Users\pankaj.jaju\Desktop\StackOverflow\acls.txt", 1)
arrFile = Split(objFile.ReadAll, vbCrLf) 'will store one line in each array index
objFile.Close
'Step 2 - Load the XML template in memory
Set xmlTemplate = CreateObject("MSXML2.DOMDocument.6.0")
With xmlTemplate
.ValidateOnParse = True
.Async = False
.LoadXML "<?xml version=""1.0"" encoding=""UTF-8"" ?>" & _
"<acls>" & _
"<acl>" & _
"<name></name>" & _
"<objectName></objectName>" & _
"<objectType></objectType>" & _
"<accessMode></accessMode>" & _
"<flag></flag>" & _
"<isUser></isUser>" & _
"</acl>" & _
"</acls>"
End With
'Step 3 - Load the relevant fields for which the data is to be set from csv file
Set nodeFields = xmlTemplate.DocumentElement.SelectNodes("/acls/acl/*")
'Step 4 - Read each line of text and create XML
For i = LBound(arrFile) To UBound(arrFile)
arrLine = Split(arrFile(i), ",") 'will split the line into various fields (to be used to create the xml)
For j = LBound(arrLine) To UBound(arrLine) 'set values for each field
nodeFields(j).Text = arrLine(j)
Next
Set xmlNew = xmlTemplate
xmlNew.Save objFSO.BuildPath("C:\Users\pankaj.jaju\Desktop\StackOverflow\", nodeFields(0).Text & ".xml") 'copy modified template as new xml file
Set xmlNew = Nothing
Next
推荐阅读
- python - 如何在kivy的屏幕加载上动态更新标签的值
- rust - 如何将我的可变引用传递给 Rust 中的迭代器循环内的函数?
- javascript - React JS,用 JSX 编译第一个组件的问题
- python-3.x - 使用子类的实例我无法访问父类的属性
- c# - 如何让 System.Text.Json 将对象反序列化为其原始类型?
- c# - Web api 不路由
- bitcoin - 一个新的比特币区块可以产生 0 个硬币(奖励 + 费用)吗?
- javascript - d3 v7 中的简单平移和缩放
- next.js - router.push 从 url 中删除 ru 语言的参数
- python - 如何将文本文件中的数据导入 Python 中的二维列表?