Мне нужно проанализировать файл XLIFF с помощью C #, но у меня возникли некоторые проблемы. Эти файлы довольно сложны, содержат огромное количество узлов.
По сути, все, что мне нужно сделать, это прочитать узел source с каждого узла trans-unit , выполнить на нем некоторую обработку и вставить обработанный текст в соответствующий target узел (который всегда будет присутствовать, но пустой).
Пример одного из узлов, которые мне нужно проанализировать, будет (весь файл может содержать 100 из них):
<trans-unit id="0000000002" datatype="text" restype="string">
<source>Windows Update is not installed</source>
<target/>
<iws:segment-metadata tm_score="0.00" ws_word_count="6" max_segment_length="0">
<iws:status target_content="placeholders_only"/>
</iws:segment-metadata>
<iws:boundary-seg sequence="bs20721"/>
<iws:markup-seg sequence="0000000001">
</trans-unit>
Узлы trans-unit могут быть закопаны глубоко в файлах, раздел заголовка содержит много данных. Я бы хотел использовать LINQ to XML для чтения данных, но мне не повезло заставить их работать. Вот мой текущий код (просто пытаюсь прочитать и вывести исходные узлы из файла:
XDocument doc = XDocument.Load(path);
Console.WriteLine("Before loop");
foreach (var transUnitNode in doc.Descendants("trans-unit"))
{
Console.WriteLine("In loop");
XElement sourceNode = transUnitNode.Element("source");
XElement targetNode = transUnitNode.Element("target");
Console.WriteLine("Source: " + sourceNode.Value);
}
Я никогда не вижу «В цикле» и не знаю почему, кто-то может сказать мне, что я здесь делаю неправильно, или предложить лучший способ добиться того, что я пытаюсь сделать здесь?
Спасибо.