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();
开发人员!!
我正在使用 "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();