我有一个包含大量XML文件作为字符串的数据库,我想更新这些文件但仅限于某些条件,例如我有这个文件:
<Activity mc:Ignorable="sads sap" x:Class="EmptyTask"
xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities"
xmlns:av="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
...
<t1:ReadProductParameterValue DisplayName="Normes tares" sap:VirtualizedContainerService.HintSize="200,22" Parameter="Normes tares" Value="[NormeTare]">
<sap:WorkflowViewStateService.ViewState>
<scg:Dictionary x:TypeArguments="x:String, x:Object">
<x:Boolean x:Key="IsExpanded">True</x:Boolean>
</scg:Dictionary>
</sap:WorkflowViewStateService.ViewState>
</t1:ReadProductParameterValue>
...
<t1:ReadProductParameterValue DisplayName="Normes volumes" sap:VirtualizedContainerService.HintSize="200,22" Parameter="Normes volumes" Value="[NormeVol]">
<sap:WorkflowViewStateService.ViewState>
<scg:Dictionary x:TypeArguments="x:String, x:Object">
<x:Boolean x:Key="IsExpanded">True</x:Boolean>
</scg:Dictionary>
</sap:WorkflowViewStateService.ViewState>
</t1:ReadProductParameterValue>
...
sap:VirtualizedContainerService.HintSize="200,22" Increment="1" Variable="OccurencePesee">
<sap:WorkflowViewStateService.ViewState>
<scg:Dictionary x:TypeArguments="x:String, x:Object">
<x:Boolean x:Key="IsExpanded">True</x:Boolean>
</scg:Dictionary>
</sap:WorkflowViewStateService.ViewState>
</t1:IncrementSharedVariableValue>
...
...
... <t1:WriteSharedVariableValue BatchVariableName="{x:Null}" DisplayName="rec_tare_ou_vol_hors_norme" sap:VirtualizedContainerService.HintSize="200,22" Value="[local_tare_ou_vol_hors_norme]" Variable="rec_tare_ou_vol_hors_norme">
<sap:WorkflowViewStateService.ViewState>
<scg:Dictionary x:TypeArguments="x:String, x:Object">
<x:Boolean x:Key="IsExpanded">True</x:Boolean>
</scg:Dictionary>
</sap:WorkflowViewStateService.ViewState>
</t1:WriteSharedVariableValue>
<FlowStep.Next>
...
...
... <t1:ExecuteTask BackColor="{x:Null}" DateToExecute="{x:Null}" LowLevel="{x:Null}" UpLevel="{x:Null}" BypassVariable="{x:Null}" AutoStart="True" DisplayName="A118. Stand by BP (v.1)" Grouping="" sap:VirtualizedContainerService.HintSize="250,55" Label="Stand by BP (v.1)" Tache="8529de33-9721-4449-83d4-79b7fd5590f0" LockingTask="True" TypePoste="Remplissage">
<t1:ExecuteTask.Arguments>
...
</Flowchart>
</Activity>
这里我想修改这个确切的节点
<t1:ExecuteTask BackColor="{x:Null}" DateToExecute="{x:Null}" LowLevel="{x:Null}" UpLevel="{x:Null}" BypassVariable="{x:Null}" AutoStart="True" DisplayName="A118. Stand by BP (v.1)" Grouping="" sap:VirtualizedContainerService.HintSize="250,55" Label="Stand by BP (v.1)" Tache="8529de33-9721-4449-83d4-79b7fd5590f0" LockingTask="True" TypePoste="Remplissage">
<t1:ExecuteTask.Arguments>
“ExecuteTask”并将“ExTasks”和“Tache”替换为“TaskID”并将其重新保存到我的DB 我怎么能用VB.NET来做..? 我是通过使用一些sql命令来做到的,但有时候,它会替换我不想修改的名称,所以我必须具体,并指定我想要编辑和更新的节点。
答案 0 :(得分:0)
使用xml linq非常简单:
Imports System.Xml
Imports System.Xml.Linq
Module Module1
Const FILENAME As String = "c:\temp\test.xml"
Sub Main()
Dim doc As XDocument = XDocument.Load(FILENAME)
Dim executeTask As XElement = doc.Descendants().Where(Function(x) x.Name.LocalName = "ExecuteTask").FirstOrDefault()
executeTask.SetAttributeValue("BackColor", "purple")
End Sub
End Module