2016-02-05 132 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節點和屬性的名稱是大小寫敏感的。