由于我无法找到对我上一个问题的答案:Xmlstarlet ed encoding and powershell inside 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编码(我能够在linux上这样做)。
如果我想在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());但我想我需要命名空间..。我也不知道该怎么做。
发布于 2017-10-11 13:18:26
最后,我只是使用一个StreamReader逐行对文件进行ReadLine。对于一个简单的包含,我决定xml:lang=“语言”在哪里,然后开始将每一行添加到字符串中。当然,我在while循环之前将头和结尾添加到我的文件中,在读取包含的行时,我停止添加每一行。我知道这不是最好的方法,但它对我的情况是有效的。
https://stackoverflow.com/questions/46588822
复制相似问题