我确信那里的所有专业人员都会发现这非常微不足道但我需要在C#中快速解决这个问题
我正在检索共享点中视图的xml架构,如下所示:
<FieldRef Name="LinkTitle"/><FieldRef Name="Author0"/><FieldRef Name="ID"/>
我想解析它,只检索此模式中每个根元素的名称。 目前这是我正在处理的代码,需要一些帮助
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);
}
显然,当这段代码执行时,我得到一个例外,说存在多个根节点,当然这是真的......但是我无法找出正确的代码来访问每个根节点和提取它的名字!
答案 0 :(得分:2)
将xml片段包装在根节点中,然后您可以使用linq to xml来检索这些名称的字符串数组,如下所示:
var xml = XElement.Parse(xmlString);
var names=xml.Elements().Attributes(@"Name").Select(attrib => attrib.Value);
答案 1 :(得分:0)
您应该将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*/
}