Jim*_*ins 4 linq-to-xml c#-4.0
我需要使用 C# 解析XLIFF文件,但遇到了一些麻烦。这些文件相当复杂,包含大量节点。
基本上,我需要做的就是从每个跨单元节点读取源节点,对其进行一些处理,然后将处理后的文本插入相应的目标节点(该目标节点始终存在,但为空)。
我需要解析的节点之一的示例是(整个文件可能包含 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>
Run Code Online (Sandbox Code Playgroud)
跨单元节点可以深埋在文件中,头部分包含大量数据。我想使用 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);
}
Run Code Online (Sandbox Code Playgroud)
我从来没有看到“循环”,我不知道为什么,有人可以告诉我我在这里做错了什么,或者建议一个更好的方法来实现我在这里想做的事情吗?
谢谢。
尝试
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
}
Run Code Online (Sandbox Code Playgroud)
另请参阅http://msdn.microsoft.com/en-us/library/bb387093.aspx。
| 归档时间: |
|
| 查看次数: |
5150 次 |
| 最近记录: |