【发布时间】:2015-02-26 17:37:10
【问题描述】:
我有以下 XML,我希望能够根据它的深度查询 XML。我事先知道深度。
更新的问题: 我有以下 XML,我希望能够根据节点是否重复来查询 XML。
所以,这是我的 XML
<Books>
<BookID>12345</BookID>
<BookName>BookName</BookName>
<Authors>
<Author>
<Name>AuthorNameOne</Name>
<City>New York</City>
</Author>
<Author>
<Name>AuthorNameTwo</Name>
<City>New York</City>
</Author>
</Authors>
</Books>
通过 XDocument,我希望能够查询此 XML 并获取存在重复数据的元素的节点名称,例如作者。或者我希望能够根据节点的深度进行查询。
更新的问题: 通过 XDocument,我希望能够查询此 XML 并获取存在重复数据的元素的节点名称,例如作者。
任何帮助将不胜感激。
【问题讨论】:
-
那么你想达到哪个目标? “有重复数据的地方”需要很多更多信息——而且“基于节点的深度”也不是很清楚。你说你“事先知道深度” - 那么你需要查询什么?样本输入和预期输出也会很有用。此外,奇怪的是你的 XML 有一个
Books元素,其中直接有一个BookID- 我希望在两者之间有一个Book元素,就像你有Authors和里面的Author一样。 -
另外,您没有完全缩进所有 XML 也无济于事 - 如果您询问深度,请让您轻松直观地发现每个元素的深度!跨度>
-
正如@JonSkeet 提到的那样,您的 xml 结构没有多大意义,但可能只是缩进已关闭。例如,您希望在
Books节点下找到一个或多个Book元素。使用 LINQ 定位重复节点很容易,但您要确保首先正确设置 xml 结构。 -
@JonSkeet:感谢您的回复。我现在已经更新了我的问题。请看一看。基本上我希望能够在有多个子元素的情况下检索像“作者”这样的名称。
-
只是重复“获取具有重复数据的元素的节点名称,例如作者”实际上并不能使其更清晰。基本上你已经多次说了同样不清楚的事情 - 看起来你在这里仍然有两个不同的问题,一个基于重复数据,一个基于节点深度,两个都不清楚 .请阅读tinyurl.com/stack-hints
标签: c# xml linq-to-xml