我已经到达可以获取所需元素值并将其附加到txt文件的位置。我遇到的问题是按顺序附加它们。我的xml文件的摘录/示例是:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Arcade>
<Game>
<Title>t1</Title>
<Publisher>p1</Publisher>
<Source>s1</Source>
<Version>v1</Version>
<Genre>g1</Genre>
</Game>
<Game>
<Title>t2</Title>
<Publisher>p2</Publisher>
<Source>s2</Source>
<Version>v2</Version>
<Genre>g2</Genre>
</Game>
<Game>
<Title>t3</Title>
<Publisher>p3</Publisher>
<Source>s3</Source>
<Version>v3</Version>
<Genre>g3</Genre>
</Game>
</Arcade>
我想看到的输出是:
t1 s1 g1
t2 s2 g2
t3 s3 g3
我的基准脚本:
#NoEnv
SendMode Input
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
xmlPath := "D:\temp\Arcade.xml"
xmlDoc := ComObjCreate("MSXML2.DOMDocument.6.0")
xmlDoc.async := false
xmlDoc.load(xmlPath)
Loop Files, %xmlPath%
{
for item in xmlDoc.getElementsByTagName("Title") {
Tstring := item.text
FileAppend, %Tstring% , D:\temp\testoutput.txt
}
for item in xmlDoc.getElementsByTagName("Source") {
Sstring := item.text
FileAppend, %Sstring% , D:\temp\testoutput.txt
}
for item in xmlDoc.getElementsByTagName("Genre") {
Gstring := item.text
FileAppend, %Gstring%`n, D:\temp\testoutput.txt
}
ExitApp
}
这将导致:
t1 t2 t3 s1 s2 s3
g1
g2
g3
我尝试过移动靠近的“花括号”,并且FileAppend也类似于:
Loop Files, %xmlPath%
{
for item in xmlDoc.getElementsByTagName("Title") {
Tstring := item.text
for item in xmlDoc.getElementsByTagName("Source") {
Sstring := item.text
for item in xmlDoc.getElementsByTagName("Genre") {
Gstring := item.text
FileAppend, %Tstring%|%Sstring%|%Gstring%`n, D:\temp\testoutput.txt
}
}
}
ExitApp
}
..这给了我
t1 s1 g1
t1 s1 g2
t1 s1 g3
t1 s2 g1
t1 s2 g2
t1 s2 g3
t1 s3 g1
t1 s3 g2
t1 s3 g3
t2 s1 g1
t2 s1 g2
t2 s1 g3
...
以及其他一些迭代。我知道(或至少感觉到)我在正确的道路上,如果这是MasterMind游戏,我想我现在可能会拥有。 :) A,不是。
任何帮助和指导将不胜感激。
答案 0 :(得分:2)
最简单的事情可能是逐个游戏进行操作,例如:
for Game in xmlDoc.getElementsByTagName("Game") {
Text := ""
Text .= Game.getElementsByTagName("Title").item(0).text
Text .= Game.getElementsByTagName("Source").item(0).text
Text .= Game.getElementsByTagName("Genre").item(0).text
MsgBox % Text
}