Двойной побег XML-файл - PullRequest
       3

Двойной побег XML-файл

1 голос
/ 04 октября 2010

У меня есть простой XML-файл, подобный следующему:

<xml>
  <check>
    <a>b&lt;</a>
    <b>
      <test>asdf</test>
    </b>
    <test>jj&amp;j</test>
    </check>
</xml>

Я хотел бы "дважды экранировать" все специальные символы, чтобы получить &amp;lt; и &amp;amp; с простым linqXML заявление.Xml все еще должен быть действительным, только значения должны быть экранированы.Кто-нибудь знает решение для этого?

Полученный XML должен выглядеть следующим образом:

<xml>
  <check>
    <a>b&amp;lt;</a>
    <b>
      <test>asdf</test>
    </b>
    <test>jj&amp;amp;j</test>
    </check>
</xml>

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 04 октября 2010

Вы не можете иметь & в имени элемента, атрибута или объявления, поэтому единственное возможное место для него - в значениях (текстовые узлы и значения атрибутов). Поскольку именно здесь вы говорите, что хотите сделать эту замену, тогда простой слепой заменой является путь. Нужно ли использовать string.Replace() или метод потоковой передачи, зависит от использования и размера всего тела.

Я согласен со всеми, это плохо пахнет.

1 голос
/ 04 октября 2010

Если вы знаете, что у вас есть только закодированные сущности в текстовых узлах, вы можете просто заменить каждый экземпляр & на &amp;.

Хотя почему вам даже нужно сделать такую ​​вещь, ускользаетя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...