Файл преобразования для замены всего родительского узла на основе текстового значения дочернего узла - XML ​​Transform - PullRequest
0 голосов
/ 24 ноября 2018

Мне нужно определить текстовое значение элемента дочернего узла.

Цель:

Я хочу создать файл Transform для файла XML, поэтому мне нужнозамените родительский узел Connection , сравнив значение дочернего узла ClientKey

Мой 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

Ответы [ 2 ]

0 голосов
/ 24 ноября 2018

Понимание 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. Чтобы получить значение элемента: ( ключ клиента является элементом )

String result = data.Element ("ClientKey"). Value

Чтобы получить значение атрибута: ( Атрибут является свойством Name внутри ClientKey )

String result = data.Attribute ("Name"). Value

0 голосов
/ 24 ноября 2018

После поиска в Google я нашел решение для Config Transform в этом случае

У нас разные подходы

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...