从 ttml 文件 C# 中删除 xml 节点

Remove xml node from ttml file 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:\UsersH144708H\Downloads\a.mul.ttml"

但如果不在 windows powershell 上丢失 utf-8 编码,我无法做到这一点(我能够在 linux bash 上做到这一点)。

如果我想在 C# 上做同样的事情,我该怎么做?我当然知道如何 open/read/write 文本文件,但我不知道是否有办法创建具有特定命名空间的 xml 以及如何删除不包含 [=27] 的每个节点=] 保留语言。

编辑。 像这样:

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

但我认为我需要命名空间...但我不知道如何。

最后我只是使用了一个StreamReader来逐行读取文件。通过一个简单的包含,我决定 xml:lang="Language" 在哪里,然后我开始将每一行添加到一个字符串中。当然,我在 while 循环之前将头部和结尾添加到我的文件中,当我读取包含的行时,我停止添加每一行。我知道这不是最好的做事方式,但它适用于我的情况。