Удалить узел XML из ttml файла C#

Так как я не смог найти ответ на свой предыдущий вопрос: кодирование Xmlstarlet и powershell внутри Process C#, я хочу попробовать другой путь.

Мне нужно просто иметь возможность удалять узлы из ttml-файла (это тип xml, используемый для субтитров). С xmlstarlet я смог сделать это так:

./xml.exe ed -N ns=http://www.w3.org/2006/04/ttaf1 -d '//ns:div[not(contains(@xml:lang,''Italian''))]' "C:\Users\1H144708H\Downloads\a.mul.ttml"

но я не могу сделать это без потери кодировки utf-8 на windows powershell (я смог сделать это на linux bash).

Если я хочу сделать то же самое на C#, как я могу это сделать? Я, конечно, знаю, как открывать / читать / писать текстовые файлы, но я не знаю, есть ли способ создать xml с определенным пространством имен и как удалить все узлы, которые не содержат xml:lang languageToKeep.

РЕДАКТИРОВАТЬ. Что-то вроде этого:

XmlDocument xml = new XmlDocument();
xml.Load(files[0]);
XmlNodeList nodes = xml.SelectNodes("//ns:div[not(contains(@xml:lang,''Italian''))]");
Console.WriteLine(nodes.ToString());

Но я думаю, что мне нужно пространство имен... и я не знаю как.

1 ответ

Решение

В конце я просто использовал StreamReader для ReadLine построчно файлом. С помощью простого Contains я решаю, где находится xml:lang="Language", и затем начинаю добавлять каждую строку в строку. Конечно, я добавил заголовок и конец в свой файл перед циклом while, и я перестал добавлять каждую строку, когда читаю строку, которая содержит. Я знаю, что это не лучший способ сделать что-то, но это работает для моего случая.

Другие вопросы по тегам