gpt4 book ai didi

c#-4.0 - 使用 C# 读取/编辑 XLIFF

转载 作者:行者123 更新时间:2023-12-03 06:36:20 26 4
gpt4 key购买 nike

我需要解析 XLIFF文件使用 C#,但我遇到了一些麻烦。这些文件相当复杂,包含大量节点。

基本上,我需要做的就是从每个 trans-unit 节点中读取 source 节点,对其进行一些处理,然后将处理后的文本插入到相应的目标节点(将始终存在,但为空)。

我需要解析的节点之一的示例是(整个文件可能包含 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节点可以深埋在文件中, header 部分包含大量数据。我想使用 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);
}

我从来没有看到“循环”,我不知道为什么,有人可以告诉我我在这里做错了什么,或者建议一个更好的方法来实现我在这里尝试做的事情吗?

谢谢。

最佳答案

尝试

XNamespace df = doc.Root.Name.Namespace;
foreach (XElement transUnitNode in doc.Descendants(df + "trans-unit"))
{
XElement sourceNode = transUnitNode.Element(df + "source");
// and so one, use the df namespace object to qualify any elements names
}

另请参阅http://msdn.microsoft.com/en-us/library/bb387093.aspx .

关于c#-4.0 - 使用 C# 读取/编辑 XLIFF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5475167/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com