【发布时间】:2018-05-10 23:15:03
【问题描述】:
我有来自 IPC1752 架构的 XML,我必须根据我的 excel 数据表填写值。所以我必须做这些事情
1.将 XML 加载到我的 VBA 中 2.用我存储在excel单元格中的值更改XML中的所需值 3.将修改后的XML保存到文件夹
'子UpdateXML() 调用 fnUpdateXMLByTags 结束子
函数 fnUpdateXMLByTags() 将 mainWorkBook 调暗为工作簿 将 wrsht 调暗为工作表
Set mainWorkBook = ActiveWorkbook
Set wrsht = mainWorkBook.Sheets("Sheet1")
wrsht.Activate
Dim oXMLFile As MSXML2.DOMDocument60
Set oXMLFile = New MSXML2.DOMDocument60
oXMLFile.async = False
oXMLFile.validateOnParse = False
XMLFileName = "Z:\IPC\IPC1752A_WK-200264-000 - Copy.xml"
For i = 3 To 5
If Not IsEmpty(mainWorkBook.Sheets("Sheet1").Range("A" & i)) Then
PartID = mainWorkBook.Sheets("Sheet1").Range("A" & i).Value
PartName = mainWorkBook.Sheets("Sheet1").Range("B" & i).Value
MaterialName = mainWorkBook.Sheets("Sheet1").Range("D" & i).Value
MassAmount = mainWorkBook.Sheets("Sheet1").Range("F" & i).Value
MassUnit = mainWorkBook.Sheets("Sheet1").Range("G" & i).Value
Path = "D:\New folder\" & PartID & ".xml"
If oXMLFile.Load(XMLFileName) Then
Set PartIDNodes = oXMLFile.SelectNodes("//@itemNumber")
Set PartNameNodes = oXMLFile.SelectNodes("//@itemName")
Set MaterialNameNodes = oXMLFile.SelectNodes("//@name")
Set MassAmountNodes = oXMLFile.SelectNodes("//@value")
Set MassUnitNodes = oXMLFile.SelectNodes("//@UOM")
PartIDNodes(0).NodeValue = Part_ID
PartNameNodes(0).NodeValue = PartName
MaterialNameNodes(5).NodeValue = MaterialName
MassAmountNodes(1).NodeValue = MassAmount
MassUnitNodes(1).NodeValue = MassUnit
Set ParentNodes = oXMLFile.SelectNodes("//Substance")
MsgBox ParentNodes.Length '->is showing zero
End If
End If
Next i
End Function
当我使用 selectnodes(attributes) 时,它的工作 [example:oXMLFile.SelectNodes("//@itemName")]
但在我使用 selectnodes(elements) 时不起作用 [example:oXMLFile.SelectNodes("//Substance")]
请帮忙。
【问题讨论】:
-
想要的结果是什么?您到底想从需要帮助的 xml 中提取什么?您要选择所有元素吗?
-
我很抱歉,因为我在问题陈述中没有很好地解释。假设我必须在父节点下添加一个节点我必须首先选择一个父节点并附加一个子节点对吗?我无法选择所需的元素。但我可以用所需的值更改属性值。那么在选择元素时我错在哪里?我现在清楚了吗兄弟?
-
这里是我要填写XML的excel数据jiocloud.com/s/?t=cpVDieMyifUMVEXJ&s=a2
-
我回答了你原来的问题。这是一个新问题,应该这样发布,然后我会很乐意回答。如果您愿意,可以将此问题回滚到之前的问题。
-
另外,根据命名空间建议找到自己的解决方案做得很好。请记住发布作为答案,以便其他人可以从中学习。另外,如果它被赞成,你会得到代表点。可能值得添加一条说明,说明您选择该特定名称空间的原因以及添加它的价值,而不是简单地排除我提到的名称空间。
标签: xml vba excel selectnodes