0

そこにいるすべてのプロはこれが非常に些細なことだと思うと確信していますが、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);
}

どうやら、このコードを実行すると、複数のルート ノードが存在するという例外が発生しますが、これはもちろん正しいことですが、すべてのルート ノードにアクセスしてその名前を抽出するための正しいコードを見つけ出すことができません。 !

4

2 に答える 2

0

以下のように、XML にはルート ノードが 1 つしかないため、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*/
}
于 2014-05-05T09:08:29.190 に答える