LINQ to XML 基本代码

LINQ to XML basic codes

开发人员!!

我正在使用 "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.file”。 我期待 "file header body trans-unit group.."。

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

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

试试这个:

var doc = XDocument.Load("filename.xml");
string[] lines = doc.Descendants("body")
                    .Elements("group")
                    .Elements("trans-unit")
                    .Elements("source")
                    .Select(e => (string)e).ToArray();