LINQ to XML基本代码

时间:2016-01-26 14:20:54

标签: c# linq-to-xml

开发者!!

我正在使用“C#in a Nutshell”学习LINQ to XML。 我想从XML文件中抓两行。

When I find myself in times of trouble
Mother Mary comes to me

文件是这样的;

<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns:sdl="http://sdl.com/FileTypes/SdlXliff/1.0">
  <file datatype="x-sdlfilterframework2">
    <header>
        <reference></reference>
    </header>
    <body>
        <trans-unit translate="no" id="20873339caf8">
            <source><x id="0"/></source>
        </trans-unit>
        <group>
            <sdl:cxts><sdl:cxt id="1"/></sdl:cxts>
            <trans-unit id="fb3052898e68">
                <source>When I find myself in times of trouble</source>
            </trans-unit>
        </group>
        <group>
            <sdl:cxts><sdl:cxt id="1"/></sdl:cxts>
            <trans-unit id="f3e2e9ca583c">
                <source>Mother Mary comes to me</source>
            </trans-unit>
        </group>
    </body>
  </file>
</xliff>

实际上,我已经尝试了我可以用这本书做的各种代码。 但是,我失败了,我处于绝望状态。 请帮忙。

(还有更多的线路。随着歌曲的发展。模式非常严格。它带有组,组和组元素。)

此致

(编辑) 我的第一次尝试是这样的。 我必须练习元素的名称。 所以..

XElement ALL = XElement.Load( myPATH );
string RSLT = "";
int CNT = 0;
foreach( XElement x in ALL.Elements() )
{
  CNT ++;
  RSLT += CNT + ".  " + x.Name + "\n";
  }
MessageBox.Show( RSLT );

它只给我“1.档案”。 我期待着“文件头体转换单元组......”。

2 个答案:

答案 0 :(得分:1)

我认为这应该可以解决问题:

var doc = XDocument.Load(path);
foreach(var srcElem in doc.Descendants("source").Skip(1))
{
    Console.WriteLine((string)srcElem);
}

答案 1 :(得分:1)

试试这个:

HOST