读取XML文档中的所有根节点名

本文关键字:根节点 XML 文档 读取 | 更新日期: 2023-09-27 18:01:36

我相信所有的专业人士会发现这非常微不足道,但我需要一个快速的解决方案,在c#

我正在检索共享点视图的xml模式,看起来像这样:

<FieldRef Name="LinkTitle"/><FieldRef Name="Author0"/><FieldRef Name="ID"/>

我想解析它,只检索这个模式中每个根元素的Name。目前这是我正在工作的代码,需要一些帮助与它

String fieldvals = view.ViewFields.SchemaXml.ToString();
XmlDocument reader = new XmlDocument(); ;
reader.LoadXml(fieldvals);
String xpath = "/";
var nodes = reader.SelectNodes(xpath);
foreach (XmlNode childrenNode in nodes)
{
    Console.WriteLine(childrenNode.SelectSingleNode("//field1").Value);
}

显然,当这段代码执行时,我得到一个异常,说存在多个根节点,这当然是真的。但是我无法找出正确的代码来访问每个根节点并提取它的名称!

读取XML文档中的所有根节点名

在根节点内包装xml片段,然后您可以使用linq to xml来检索这些名称的字符串数组,如下所示:

var xml = XElement.Parse(xmlString);
var names=xml.Elements().Attributes(@"Name").Select(attrib => attrib.Value);

您应该将xml包装在某个根节点中,因为xml只能有一个根节点,如下所示:

<FieldRefs>
    <FieldRef Name="LinkTitle"/>
    <FieldRef Name="Author0"/>
    <FieldRef Name="ID"/>
</FieldRefs>

然后你的代码将执行良好。

String fieldvals = view.ViewFields.SchemaXml.ToString();
XmlDocument reader = new XmlDocument(); ;
reader.LoadXml(fieldvals);
String xpath = "/FieldRefs/FieldRef";
var nodes = reader.SelectNodes(xpath);
foreach (XmlNode childrenNode in nodes)
{
    /*Process here*/
}
相关文章: