【问题标题】:I need to edit and update XML file from a database VB NET我需要从数据库 VB NET 编辑和更新 XML 文件
【发布时间】:2017-07-10 15:03:23
【问题描述】:

我有一个数据库,其中包含许多作为字符串的 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”并将其重新保存到我的数据库中 我怎样才能使用 VB.NET .. 来做到这一点? 我通过使用一些 sql 命令来做到这一点,但有时,它会替换我不想修改的名称,所以我真的必须具体,并指定我要编辑和更新的节点..

【问题讨论】:

    标签: xml vb.net xpath


    【解决方案1】:

    使用 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-22
      • 2019-03-10
      • 1970-01-01
      相关资源
      最近更新 更多