Я хочу заменить данные в файле XML с помощью VBA.Данные XML выглядят так:
<MarkGrades>
<Grade MarkGrade="0" Label="3OP" TestBins="1,-1">0</Grade>
<Grade MarkGrade="2" Label="GOOD" TestBins="2">2</Grade <Grade>
<Grade MarkGrade="4" Label="FU" TestBins="31,3135,3136,3312,">4</Grade>
<Grade MarkGrade="3" Label="PA" TestBins="4016,4022,4029">3</Grade>
<Grade MarkGrade="5" Label="OS" TestBins="12,13,20012,20013">5</Grade>
</MarkGrades>
Я хочу заменить данные в узле TestBins
.Если MarkGrade="4"
или Label="FU"
, замените данные в TestBins
с "2"
на "something"
.Но я не могу понять, как указать, что:
Dim doc As Object
Set doc = CreateObject("MSXML2.DOMDocument")
Dim isLoaded As Boolean
Dim i As Integer
Dim filePath As Variant
filePath = "C:\Users\xxxx\Desktop\Splitter\test.xml"
isLoaded = doc.Load(filePath)
i = 0
If isLoaded Then
Dim Grade As msxml2.IXMLDOMNodeList
Set Grade = doc.getElementsByTagName("Grade")
Dim attr As msxml2.IXMLDOMAttribute
Dim node As msxml2.IXMLDOMElement
For Each node In Grade
For Each attr In node.Attributes
If attr.Name = "TestBins" Then
i = i + 1
If i = 3 Then
attr.Value = SplitterMark.TextBox3.Value
ElseIf i = 4 Then
attr.Value = SplitterMark.TextBox4.Value
ElseIf i = 5 Then
attr.Value = SplitterMark.TextBox5.Value
End If
End If
Next attr
Next node
Я пытался посчитать, если нашел TestBins
count +1
Это работает хорошо.Но можно использовать только с этим файлом, потому что другой файл не является общим.как это:
<MarkGrades>
<Grade MarkGrade="5" Label="OS" TestBins="12,13,20012,20013">5</Grade>
<Grade MarkGrade="0" Label="3OP" TestBins="1,-1">0</Grade>
<Grade MarkGrade="4" Label="FU" TestBins="31,3135,3136,3312,">4</Grade>
<Grade MarkGrade="2" Label="GOOD" TestBins="2">2</Grade <Grade>
<Grade MarkGrade="3" Label="PA" TestBins="4016,4022,4029">3</Grade>
</MarkGrades>
Есть идеи?