gpt4 book ai didi

c# - 如何使用 LINQ 获取 XML 元素的位置(按顺序索引)?

转载 作者:数据小太阳 更新时间:2023-10-29 02:48:12 25 4
gpt4 key购买 nike

我有完全像这种格式的 XML:

<?xml version="1.0" encoding="utf-8"?>
<book>
<chapter>
<verse>This is verse 1</verse>
<verse>This is verse 2</verse>
<verse>This is verse 3</verse>
<verse>This is verse 4</verse>
</chapter>
<chapter>
<verse>This is verse 1</verse>
<verse>This is verse 2</verse>
</chapter>
<chapter>
<verse>This is verse 1</verse>
</chapter>
</book>

在使用 Linq 的 C# 中,我需要能够根据函数 state.getChapterNumber() 的值获取特定位置或索引的 XML 元素。例如,如果值为 4,我需要从 XML 文档中获取第 4 章元素。

XDocument book = XDocument.Load(string.Format("Translations/NWT/{0}.xml", state.BookName));
var verses = from chapter in book.Decendants()
where state.getChapterNumber() == (WHAT DO I PUT HERE TO MATCH THE VALUE??)
from verse in chapter.Descendants("p").Elements()
select new
{
VerseNumber = verse.Attribute("n").Value,
Text = verse.Value,
LastVerseInParagraph = verse.Parent.Elements().LastOrDefault().Value,
FirstVerseInParagraph = verse.Parent.Elements().FirstOrDefault().Value
};

请帮忙,这真的很重要,这几天一直在拖我的后腿。我想要做的就是能够从我在书中选择的任何章节集中获得经文。

最佳答案

首先,我不认为你想要第二个后代 - 你想要第二个章节,这不一定是同一件事。幸运的是,这很容易做到:

// Use 1 for the second chapter, 2 for "element 2" (i.e. the third element) etc
var chapter = book.Descendants("chapter").ElementAt(1);

var verses = from verse in chapter...

编辑:对于节号,使用提供元素索引的 Select 的重载:

var verses = chapter.Element("verse")
.Select((element, index) => new {
VerseNumber = index + 1,
Text = element.Value
});

我个人认为,每一节 都在段落中包含第一节和最后一节意义不大。这不是那节经文的真正特征,对吗?

关于c# - 如何使用 LINQ 获取 XML 元素的位置(按顺序索引)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8047184/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com