由于我无法找到上一个问题的答案: 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"
但是我没有能够在Windows PowerShell上丢失utf-8编码(我能够在linux bash上执行此操作)。
如果我想在C#上做同样的事情我该怎么办?我当然知道如何打开/读/写文本文件,但我不知道是否有办法创建具有特定命名空间的xml以及如何删除不包含xml的每个节点:lang languageToKeep。
EDIT。 像这样:
XmlDocument xml = new XmlDocument();
xml.Load(files[0]);
XmlNodeList nodes = xml.SelectNodes("//ns:div[not(contains(@xml:lang,''Italian''))]");
Console.WriteLine(nodes.ToString());
但我认为我需要命名空间......而且我不知道如何。
答案 0 :(得分:0)
最后,我只是使用StreamReader来读取文件中的ReadLine。使用简单的Contains我决定xml:lang =“Language”的位置,然后我开始将每一行添加到字符串中。当然我在while循环之前将头部和结尾添加到我的文件中,当我读取包含的行时,我停止添加每一行。我知道这不是最好的做事方式,但它适合我的情况。