【问题标题】:Transform file to replace the whole parent node based on the text value of the child node - XML Transform转换文件以根据子节点的文本值替换整个父节点 - XML 转换
【发布时间】:2018-11-24 06:59:24
【问题描述】:

我需要识别子节点元素的文本值。

目的:

我想为 XML 文件创建转换文件,所以我需要通过比较子节点 ClientKey

的值来替换父节点 Connection

我的 XML 文件:

<Connection>
     <ClientKey>Client1</ClientKey>
     <ConnectionString>Test</ConnectionString>
     <WorkingDocs>Test</WorkingDocs>
     <TemplateDocs>Test</TemplateDocs>
     <PatientDocs>Test</PatientDocs>
     <ClientName>Test</ClientName>
     <ClientTimeZone>Test</ClientTimeZone>
     <ClientTimeDiff>Test</ClientTimeDiff>
     <ExceptionLogPath>Test</ExceptionLogPath>
</Connection>

如何识别 ClientKey 节点的文本

【问题讨论】:

    标签: xml xpath transform xml-document-transform


    【解决方案1】:

    谷歌搜索后,我找到了在这种情况下配置转换的解决方案

    我们有不同的方法

    1. Condition(ClientKey/text()='Client1')
    2. XPath(/Connections/Connection[ClientKey/text()='UHG_LOCAL'])
    
    <Connection xdt:Transform="Replace" xdt:Locator="Condition(ClientKey/text()='Client1')">
        <ClientKey>GC_LOCAL</ClientKey>
        <ConnectionString>Test1</ConnectionString>
        <WorkingDocs>Test1</WorkingDocs>
        <TemplateDocs>Test1</TemplateDocs>
        <PatientDocs>Test1</PatientDocs>
        <ClientName>Test1</ClientName>
        <ClientTimeZone>Test1</ClientTimeZone>
        <ClientTimeDiff>Test1</ClientTimeDiff>
        <ExceptionLogPath>Test1</ExceptionLogPath>
    </Connection>
    

    【讨论】:

      【解决方案2】:

      了解 LINQ to XML 会有更多用处。请查看https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/linq-to-xml-overview

      XML 值可以存储在“元素”或“属性”下.. 考虑下面的 xml 文件..

      <Connection>
       <ClientKey Name = "KeyName" >Client1</ClientKey>
       <ConnectionString>Test</ConnectionString>
       <WorkingDocs>Test</WorkingDocs>
       <TemplateDocs>Test</TemplateDocs>
       <PatientDocs>Test</PatientDocs>
       <ClientName>Test</ClientName>
       <ClientTimeZone>Test</ClientTimeZone>
       <ClientTimeDiff>Test</ClientTimeDiff>
       <ExceptionLogPath>Test</ExceptionLogPath>
      

      XElement Data = XElement.Load() //你的 Xml 引用在这里

      1. 获取元素值: (客户端键是元素

      字符串结果 = data.Element("ClientKey").value

      1. 获取Attribute值:(Attribute是ClientKey里面的Name属性

      字符串结果 = data.Attribute("Name").value

      【讨论】:

      • 这里获取子节点值的概念与实际编程不同。这与配置转换文件有关。我更新了我的问题,让我的问题更清楚。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-27
      • 2022-01-14
      • 1970-01-01
      • 2013-02-17
      • 1970-01-01
      相关资源
      最近更新 更多