У меня есть документ XLIFF, который выглядит следующим образом:
<xliff xmlns="urn:oasis:names:tc:xliff:document:2.0" srcLang="en-US" version="2.0" xml:space="preserve">
<file canResegment="no" id="Test_x0020_File">
<unit canResegment="no" id="6TkImOYdyao" type="DocumentState">
<originalData>
<data id="generic_1">
<Style FlowDirection="LeftToRight" LeadingMargin="0" TrailingMargin="0" FirstLineMargin="0" /></Style>
</data>
<data id="span_2">
<Style FontFamily="Arial" FontSize="21" FontIsBold="True" /></Style>
</data>
</originalData>
<segment canResegment="no">
<source>
<pc id="block_0">
<ph dataRef="generic_1" id="generic_1"/>
<pc dataRefStart="span_2" id="span_2">Correct!</pc>
</pc>
</source>
</segment>
</unit>
Я пытаюсь сделать следующее:
- Клонировать узел-источник и затем переименовать его в Target.
- Получите значение, в данном случае «Правильно!» от
<pc dataRefStart="span_2" id="span_2">
- Установите значение Правильно! Корректо! (переведенное слово)
Я думаю, что я # 1 сделал со следующим кодом:
XDocument doc = XDocument.Load("F:\\Projects\\Translate\\Test Data.xlf")
XNamespace df = doc.Root.Name.Namespace;
foreach (XElement segmentNode in doc.Descendants(df + "segment"))
{
//Find the Souce node and value
XElement sourceNodeValue = segmentNode.Element(df + "source");
var desiredElement = sourceNodeValue.FirstNode as XElement;
if (desiredElement != null)
{
segmentNode.Add(new XElement(df + "target", new XElement(desiredElement)));
}
Кажется, это работает, и я считаю, что у меня также # 2 работает с этим код, как я могу получить «Правильно!»:
string sourceTranslated = "";
sourceTranslated = sourceNodeValue.Value;
Я потерпел неудачу с # 3. Я пробовал несколько вещей, но лучшее, что я могу сделать, это получить значение, но затем я теряю все данные дочернего узла. Это показывает <pc id="block_0">Correcto!</pc>
Это должно выглядеть так:
<pc id="block_0">
<ph dataRef="generic_1" id="generic_1"/>
<pc dataRefStart="span_2" id="span_2">Correcto!</pc>
</pc>
Все идеи приветствуются и заранее благодарны.