Удалить узел 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, и я перестал добавлять каждую строку, когда читаю строку, которая содержит. Я знаю, что это не лучший способ сделать что-то, но это работает для моего случая.