LINQPad 的连接是数据上下文。您可能会找到或编写 XML 驱动程序,但它甚至可能不值得一看。只需从脚本中的 .NET 代码访问 XML,并将源作为文件或剪贴板。
LINQ to XML 主要是指 XDocument 等。 XDocument.Load 或 .Parse 将帮助您入门。
以下是使用 LINQ to XML 查询剪贴板上的 XML 架构的两种方法:
XNamespace xsd = "http://www.w3.org/2001/XMLSchema";
// pure drilldown, step by step
XDocument.Parse(System.Windows.Clipboard.GetText())
.Element(xsd + "schema")
.Elements(xsd + "element")
.Elements(xsd + "annotation")
.Elements(xsd + "documentation")
.Select(d => new { element = d.Parent.Parent.Attribute("name")?.Value, type = d.Parent.Parent.Attribute("type")?.Value, documentation = d?.Value})
.Dump();
// alternative syntax, which has range variables that can be referenced in the select
(from schema in XDocument.Parse(System.Windows.Clipboard.GetText()).Elements(xsd + "schema")
from element in schema.Elements(xsd + "element")
from annotation in element.Elements(xsd + "annotation")
from documentation in annotation.Elements(xsd + "documentation")
select new {element = element.Attribute("name")?.Value, type = element.Attribute("type")?.Value, documentation?.Value})
.Dump();
如果您熟悉 XPathSelectElements 等,也可以使用 XPath。
注意:这些查询并不完全相同。第一个对路径中的每个文档元素都有一个项目。第二个对于每个模式、每个元素、每个注释和每个文档都至少有一个项目,无论是否有一个文档作为后代。