Asm*_*mor 0 c# xml linq linq-to-xml
我正在编写一个程序来解析一些第三方XML文件.结构就像......
<CharacterSheet>
...
<StatBlock>
...
<Stat>
...
<alias />
...
</Stat>
...
</StatBlock>
...
</CharacterSheet>
Run Code Online (Sandbox Code Playgroud)
我正在使用它来使用linq进行一些练习,我正在罚款我必须编写一些非常丑陋的链式查询来获得我想要的,统计列表及其所有别名.
var CharSheet = from i in character.Elements()
where i.Name == "CharacterSheet"
select i;
var StatBlocks = from sheet in CharSheet
from statBlock in sheet.Elements()
where statBlock.Name == "StatBlock"
select statBlock;
var stats = from statBlock in StatBlocks
from stat in statBlock.Elements()
select stat;
var statAliases = from stat in stats
from alias in stat.Elements()
where alias.Name == "alias"
select new { stat, alias };
Run Code Online (Sandbox Code Playgroud)
而且我意识到我可以使用"into"(原来我是如何使用它)将其变成一个非常长的查询,但这只会让它变得更加密集和难以使用.
似乎必须有一种更简单的方法来做我正在尝试做的事情.
您可以使用XPathSelectElements()(这可能是一个更好的主意,说实话),或者您可以使用Elements()扩展方法:
var query = character.Elements("CharacterSheet")
.Elements("StatsBlock")
.Elements()
.Elements("alias")
.Select(x => new { stat=x.Parent, alias=x};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
738 次 |
| 最近记录: |