Я использую «приложение 1» для создания и редактирования файлов xhtml.Он имеет возможность вводить аннотации в содержимое непустых элементов, таких как p, h1, h2, td и т. Д., Что приводит к смешанным фрагментам XML-кода, например:
<p>Hello <NS1:annotation [...SomeAttributes...]>everybody</NS1:annotation> out there!</p>
Для целей перевода Iнеобходимо экспортировать эти файлы xhtml в «приложение 2», которое не может работать с этими внутренними элементами.Поскольку аннотации не являются частью желаемого содержимого в переводах, удаление их перед экспортом в приложение 2 было бы идеальным обходным путем:
<p>Hello everybody out there!</p>
Удаление узлов из XmlDocument надежно находит иудаляет внутренние элементы xml, но также удаляет содержимое элемента аннотации - теряя слово «все» в приведенном выше примере:
<p>Hello out there!</p>
Что мне нужно, так это «развязать» содержимое этих внутренних элементовв содержание родительского элемента.Но до сих пор я не нашел метод, использующий инструменты c # xml, выполняющие эту работу.
До сих пор я сначала сохранял файл xhtml, заново открывал его как текстовый файл и использовал regedits для удаления аннотации.Я даже могу использовать для этого методы c #:
TextFile txt = new TextFile();
string s = txt.ReadFile(filename);
string pattern = @"<NS1:annotation.+>(.+)</NS1:annotation>";
string input = s;
string replacement = "$1";
Regex rgx = new Regex(pattern);
string result = rgx.Replace(input, replacement);
TextFile.Write((filename,result););
Это, несомненно, лучшее решение, поскольку оно не теряет содержание аннотации, но мне интересно, действительно ли не существует решения, основанного на c # Xml-инструменты, которые делают эту работу.
Кто-нибудь знает это?