获取xml中已搜索关键字的上一个节点
本文关键字:上一个 节点 关键字 搜索 xml 获取 | 更新日期: 2023-09-27 17:59:03
我有一个xml文档,如下所示:
<bookstore>
<book>
<title>The Autobiography of Benjamin Franklin</title>
<author>
<first-name>Benjamin</first-name>
<last-name>Franklin</last-name>
</author>
<price>8.99</price>
</book>
<book>
<title>Zen and the Art of Motorcycle Maintenance</title>
<author>
<first-name>Robert</first-name>
<last-name>Pirsig</last-name>
</author>
<price>5.99</price>
</book>
<book>
<title>Other Cities</title>
<author>
<first-name>Benjamin</first-name>
<last-name>Rosenbaum</last-name>
</author>
<price>9.99</price>
</book>
</bookstore>
当然,书店有不止一本书,所以我想搜索一位作者,然后为包含搜索到的作者名称的图书节点返回一个XElement
。
var document = XDocument.Parse(xml);
var bookElements = document.Descendants("book")
.Where(arg => arg.Element("author").Element("first-name").Value == "Benjamin")
.ToList();
或
var bookElements = document.Descendants("first-name")
.Where(arg => arg.Value == "Benjamin")
.Select(arg => arg.Parent.Parent)
.ToList();
[编辑]当你继续编辑问题时,我会编辑答案:)。
找到第一本符合标准的书:
var foundBookElement = document.Descendants("book")
.Where(arg => arg.Element("author").Element("first-name").Value == "Benjamin")
.FirstOrDefault();
如果没有一本书符合条件,则foundBookElement
将为空。