0

私はこの xml ドキュメントを長い間扱ってきましたが、xml ドキュメントで定義されたアクセス許可レベルに基づいて、ユーザーが特定のフィールドを表示できる必要があることがわかりました。これは、以前のドキュメントの外観です。

<?xml version="1.0" encoding="utf-8" ?> 
<AccessControl>
    <Field>
      <name>First_Name</name>
      <label>First Name</label>
    </Field>
    <Field>
      <name>Last_Name</name>
      <label>Last Name</label>
    </Field>
......
.....
</AccessControl>

ドキュメントの解析方法は次のとおりです。

doc.Load(System.Web.Hosting.HostingEnvironment.MapPath("~/ConfigFile.xml"));
XmlNode root = doc.DocumentElement;
XmlNodeList xnList = root.SelectNodes("/AccessControl/Field");
 foreach (XmlNode xn in xnList)
 {
     string fieldName = xn["name"].InnerText;
     .....
     ....
}

ここで、ドキュメントにいくつかの許可ノードを追加します。これにはfield、次のようなノードが含まれます。

<AccessControl>
  <Permission Name = "permissionXYZ" >
    <Field>
      <name>First_Name</name>
      <label>First Name</label>
    </Field>
    <Field>
      <name>Last_Name</name>
      <label>Last Name</label>
    </Field>
    ....
  </Permission>
  <Permission Name = "permission123" >
    <Field>
    ...
    ...
    </Field>
  </Permission>
</AccessControl>

ドキュメントで定義された権限に基づいて、必要なフィールドのみを取得するにはどうすればよいですか??

4

1 に答える 1

1

LINQ を使用すると、属性値に基づいてフィルター処理し、フィールドを選択できます。この例の Test.xml ファイルには、サンプル XML が含まれているだけです。

    XDocument document = XDocument.Load("c:\\temp\\test.xml");
    var fields = document.Descendants("Permission")
                .Where(i => i.Attribute("Name") != null && i.Attribute("Name").Value == "permissionXYZ")
                .Select(i => i.Descendants("Field"));
于 2013-04-10T14:02:00.923 に答える