2016-02-05 75 views
2

我被困在解析下面的XML中。更改XML文件中的节点和属性文本

<?xml version="1.0" encoding="UTF-8"?> 
<Provisioning xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <Request> 
    <Header> 
     <Command>Create</Command> 
     <EntityIdentifiers> 
     <Identifier Type="CosName" Value="Super_Super"/> 
     </EntityIdentifiers> 
     <EntityName>COS</EntityName> 
    </Header> 
    <Data> 
     <COS> 
     <ServiceLevels> 
      <ServiceLevel> 
      <ServiceName>MMS</ServiceName> 
      <ServiceLevelName>Super user</ServiceLevelName> 
      </ServiceLevel> 
      <ServiceLevel> 
      <ServiceName>General</ServiceName> 
      <ServiceLevelName>Super user</ServiceLevelName> 
      </ServiceLevel> 
      <ServiceLevel> 
      <ServiceName>MMBOX</ServiceName> 
      <ServiceLevelName>Super user</ServiceLevelName> 
      </ServiceLevel> 
     </ServiceLevels> 
     <CosName>Super_Super</CosName> 
     </COS> 
    </Data> 
    </Request> 
</Provisioning> 

我需要将“标识符”标签“类型”和“值”替换为其他各自的值。并且还要更改“ServiceLevel”下的所有节点值。

Set xmlDoc = CreateObject("Microsoft.XMLDOM") 
xmlDoc.Async = "false" 
xmlDoc.Load("C:\1.xml") 
Set nodeXML = xmlDoc.getElementsByTagName("Identifier") 
Set node = nodeXML.item(0) 
MsgBox node.Text 
+0

VB脚本不是VB .NET。请采用您的标签。 –

+0

想要这样的https://technet.microsoft.com/en-us/magazine/2008.02.heyscriptingguy.aspx ?? – user5612655

回答

1

Microsoft.XMLDOM已过时,不应再使用。改为使用Msxml2.DOMDocument

Set xml = CreateObject("Msxml2.DOMDocument") 

选择单个节点与XPath expression这样的:

Set node = xml.SelectSingleNode("//node_name") 

和几个具有相同名称的这样的节点:节点的

Set nodes = xml.SelectNodes("//node_name") 

属性(<node attribute="value">)可以这样改变:

node.SetAttribute("attribute_name") = "new value" 

和节点文本(<node>text</node>)所示:

node.Text = "new text" 

要注意的是XML节点和属性的名称是大小写敏感的。