Как изменить значение атрибута, используя Xpath и функцию fn: replace? - PullRequest
0 голосов
/ 08 марта 2012

Возможно ли изменить значения всех атрибутов, называемых Entry, на новое значение сразу, используя функцию замены XPath? или я должен вручную перебрать все узлы и заменить каждое значение атрибута самостоятельно?

У меня был этот пример XML

<?xml version="1.0" encoding="UTF-16"?>
<Root>
  <Items>
    <action type="xta">
      <Menu Type="2"  Entry="Foo1"  />
      <Menu Type="1"  Entry="Foo2"/>
      <Menu Type="1"  Entry="Foo3"/>
      <Menu Type="1"  Entry="Foo4"/>
    </action>
  </Items>
</Root>

Я хочу получить это

<?xml version="1.0" encoding="UTF-16"?>
<Root>
  <Items>
    <action type="xta">
      <Menu Type="2"  Entry="Bar\Foo1"  />
      <Menu Type="1"  Entry="Bar\Foo2"/>
      <Menu Type="1"  Entry="Bar\Foo3"/>
      <Menu Type="1"  Entry="Bar\Foo4"/>
    </action>
  </Items>
</Root>

Если не возможно использовать XPath напрямую, что является лучшим способом сделать это с помощью c #?

1 Ответ

0 голосов
/ 08 марта 2012

То, что вы просите за это не прямая операция XPath навигации, это преобразование. Есть несколько способов сделать изменения Xml, но ваши два лучше, вероятно, это:

  1. Вы можете использовать XslCompiledTransform Class с XSLT. (Также см Использование XslCompiledTransform класса )
  2. Вы можете использовать XDocument Класс в LINQ к XML и изменить его с помощью C # код.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...