2017-12-08 23 views
0

XMLファイルを読み込もうとしています(これは正しい形式ではありません)。以下は私の実際のXMLファイルです。VBAでXMLファイルを読む

<?xml version="1.0" encoding="UTF-8"?><Report time="8/18/2017 12:54:42"><Table>TABLE</Table><Application>Fruits</Application><Environment>AMAZON</Environment><Group>FOREST</Group><SubGroup>RAINFOREST</SubGroup><Row>3</Row><Release>SEPT</Release><Result>Pass</Result><Testname>HEALTHCHECK</Testname><Screenshotpath>C:\PracSession\ABC.png"</Screenshotpath></Report> 

これを読んでXMLフォーマットを保存しようとしていますが、これ以上は取得できません。

私が欲しいし、それを保存フォーマット:

<?xml version="1.0" encoding="UTF-8"?> 
<Report time="8/18/2017 12:54:42"> 
<Table>TABLE</Table> 
<Application>Fruits</Application> 
<Environment>AMAZON</Environment> 
<Group>FOREST</Group> 
<SubGroup>RAINFOREST</SubGroup> 
<Row>3</Row> 
<Release>SEPT</Release> 
<Result>Pass</Result> 
<Testname>HEALTHCHECK</Testname> 
<Screenshotpath>C:\PracSession\ABC.png"</Screenshotpath> 
</Report> 

私は形式を確認することができますが、それを保存することはできませんよ。以下は私が試したコードです。

Public Sub Create_Report() 
myFile = "C:\Prac_Session\OLB.xml" 
Dim fso As FileSystemObject: Set fso = New FileSystemObject 
Set txtStream = fso.OpenTextFile(myFile, ForReading, False) 
Do While Not txtStream.AtEndOfStream 
    Debug.Print txtStream.ReadLine 
    Tempstr = ">" & vbNewLine & "<" 
    a = Replace(txtStream.ReadLine, "><", Tempstr) 
    Debug.Print a 
    ''Now to save.??'' 
Loop 
txtStream.Close 

End Sub 
+3

xmlファイルを処理するのにDOMを使用しないのはなぜですか?テキストファイルとして扱うと、問題が発生する可能性があります。 –

+0

[This](https://blogs.msdn.microsoft.com/robert_mcmurray/2012/07/06/creating-pretty-xml-using-xsl-and-vbscript/)は次のとおりです。あなたが探しているもの –

+0

@PankajJaju NO。ありがとう –

答えて

2

私は、これはそれを行うだろうと信じて:

Sub foo() 
Dim objFSO 
Const ForReading = 1 
Const ForWriting = 2 
Dim objTS 'define a TextStream object 
Dim strContents As String 
Dim fileSpec As String 

fileSpec = "C:\Prac_Session\OLB.xml" 'change the path to whatever yours ought to be 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objTS = objFSO.OpenTextFile(fileSpec, ForReading) 

strContents = objTS.ReadAll 'would use read all to read the whole file into memory 

'Do While Not objTS.AtEndOfStream 
' strContents = strContents & " " & objTS.ReadLine 'Read line by line and store all lines in strContents 
'Loop 
Tempstr = ">" & vbCrLf & "<" 'instead of vbNewLine 
strContents = Replace(strContents, "><", Tempstr) 
objTS.Close 

Set objTS = objFSO.OpenTextFile(fileSpec, ForWriting) 
objTS.Write strContents 
objTS.Close 
End Sub 
+0

ありがとう@Xabier。完璧な!!!! –

+0

心配する必要はありません。:) – Xabier

+0

@nishitdey答えとして自分の回答を記入してください。ありがとう。 – Xabier