SecurityElementとは? わかりやすく解説

SecurityElement クラス

セキュリティ オブジェクトエンコーディング用の XML オブジェクト モデル表します。このクラス継承できません。

名前空間: System.Security
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public NotInheritable Class
 SecurityElement
Dim instance As SecurityElement
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public sealed class SecurityElement
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public ref class SecurityElement sealed
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
public final class SecurityElement
SerializableAttribute 
ComVisibleAttribute(true) 
public final class SecurityElement
解説解説

このクラスは、一般 XML オブジェクト モデルとして使用するではなくセキュリティ システム内で使用するための単純な XML オブジェクト モデル簡易実装目的としています。このドキュメントでは、XML基本的な知識があることを前提にしています。

要素対す単純な XML オブジェクト モデルは、次に示す部分から構成されます。

属性ベースXML 表記使用してセキュリティ要素とその値を表現することを強くお勧めます。つまり、要素プロパティ属性として表現しプロパティ値を属性値として表現しますタグ内のテキスト入れ子にしないでください任意の <tag>text</tag> 表現で、通常<tag value=”text”/> 型の表現利用できます属性ベースXML 表記使用すると、読みやすくなり、生成される XML シリアル化簡単に WMI移植できます

属性の名前は、1 文字以上にする必要があり、null 参照 (Visual Basic では Nothing) にはできません。要素ベースの値形式使用する場合null 参照 (Visual Basic では Nothing) テキスト文字列要素は、<tag/> 形式表現しますそれ以外場合テキスト<tag> トークン</tag> トークン区切ります。どちらの書式も、存在する場合表示される属性結合できます

要素タグ属性、およびテキスト存在する場合は、常に大文字と小文字区別されます。XML 書式には、必要に応じて引用符とエスケープ文字含まれます。XML での使用無効な文字を含む文字列値を使用すると、ArgumentException が発生します。これらの規則は、すべてのプロパティメソッド適用されます。

メモメモ

パフォーマンス上の理由から、要素XML テキスト書式エンコードする場合にだけ文字有効性確認しますが、プロパティまたはメソッドすべてのセットでは確認しません。静的メソッド使用すると、必要に応じて明示的に確認できます

使用例使用例

SecurityElement クラスメンバ使用例次に示します

Imports System
Imports System.Security
Imports System.Collections



Class SecurityElementMembers

    <STAThread()> _
    Shared Sub Main(ByVal
 args() As String)
        Dim xmlRootElement As New
 SecurityElement("RootTag", "XML
 security tree")
        AddAttribute(xmlRootElement, "creationdate",
 DateTime.Now.ToString())
        AddChildElement(xmlRootElement, "destroytime",
 DateTime.Now.AddSeconds(1.0).ToString())

        Dim windowsRoleElement As New
 SecurityElement("WindowsMembership.WindowsRole")
        windowsRoleElement.AddAttribute("version",
 "1.00")
        ' Add a child element and a creationdate attribute.
        AddChildElement(windowsRoleElement, "BabyElement",
 "This is a child element")
        AddAttribute(windowsRoleElement, "creationdate",
 DateTime.Now.ToString())

        xmlRootElement.AddChild(windowsRoleElement)
        CompareAttributes(xmlRootElement, "creationdate")
        ConvertToHashTable(xmlRootElement)

        DisplaySummary(xmlRootElement)

        ' Determine if the security element is too old to keep.
        xmlRootElement = DestroyTree(xmlRootElement)
        If Not (xmlRootElement Is
 Nothing) Then
            Dim elementInXml As String
 = xmlRootElement.ToString()
            Console.WriteLine(elementInXml)
        End If

        Console.WriteLine("This sample completed successfully;
 " + "press Enter to exit.")
        Console.ReadLine()

    End Sub 'Main


    ' Add an attribute to the specified security element.
    Private Shared Function
 AddAttribute(ByVal xmlElement As SecurityElement,
 ByVal attributeName As String, ByVal attributeValue As String)
 As SecurityElement
        If Not (xmlElement Is
 Nothing) Then
            ' Verify that the attribute name and value are valid XML
 formats.
            If SecurityElement.IsValidAttributeName(attributeName)
 AndAlso SecurityElement.IsValidAttributeValue(attributeValue)
 Then
                ' Add the attribute to the security element.
                xmlElement.AddAttribute(attributeName, attributeValue)
        End If
        Return xmlElement

    End Function 'AddAttribute


    ' Add a child element to the specified security element.
    Private Shared Function
 AddChildElement(ByVal parentElement As SecurityElement,
 ByVal tagName As String, ByVal tagText As String)
 As SecurityElement
        If Not (parentElement Is
 Nothing) Then
            ' Ensure that the tag text is in valid XML format.
            If Not SecurityElement.IsValidText(tagText)
 Then
                ' Replace invalid text with valid XML text 
                ' to enforce proper XML formatting.
                tagText = SecurityElement.Escape(tagText)

            ' Determine whether the tag is in valid XML format.
            If SecurityElement.IsValidTag(tagName) Then
                Dim childElement As SecurityElement
                childElement = parentElement.SearchForChildByTag(tagName)
                If Not (childElement Is
 Nothing) Then
                    Dim elementText As String
                    elementText = parentElement.SearchForTextOfTag(tagName)
                    If Not elementText.Equals(tagText)
 Then
                        ' Add child element to the parent security element.
                        parentElement.AddChild(New SecurityElement(tagName,
 tagText))
                    End If
                Else
                    ' Add child element to the parent security element.
                    parentElement.AddChild(New SecurityElement(tagName,
 tagText))
                End If
            End If
        End If
        Return parentElement

    End Function 'AddChildElement


    ' Create and display a summary sentence 
    ' about the specified security element.
    Private Shared Sub DisplaySummary(ByVal
 xmlElement As SecurityElement)
        ' Retrieve tag name for the security element.
        Dim xmlTreeName As String
 = xmlElement.Tag.ToString()
        ' Retrieve tag text for the security element.
        Dim xmlTreeDescription As String
 = xmlElement.Text
        ' Retrieve value of the creationdate attribute.
        Dim xmlCreationDate As String
 = xmlElement.Attribute("creationdate")
        ' Retrieve the number of children under the security element.
        Dim childrenCount As String
 = xmlElement.Children.Count.ToString()
        Dim outputMessage As String
 = "The security XML tree named " + xmlTreeName
        outputMessage += "(" + xmlTreeDescription
 + ")"
        outputMessage += " was created on " + xmlCreationDate
 + " and "
        outputMessage += "contains " + childrenCount
 + " child elements."

        Console.WriteLine(outputMessage)

    End Sub 'DisplaySummary


    ' Compare the first two occurrences of an attribute 
    ' in the specified security element.
    Private Shared Sub CompareAttributes(ByVal
 xmlElement As SecurityElement, ByVal attributeName
 As String)
        ' Create a hash table containing the security element's attributes.
        Dim attributeKeys As Hashtable = xmlElement.Attributes
        Dim attributeValue As String
 = attributeKeys(attributeName).ToString()
        Dim xmlChild As SecurityElement
        For Each xmlChild In
 xmlElement.Children
            If attributeValue.Equals(xmlChild.Attribute(attributeName))
 Then
            End If
        Next xmlChild
        ' The security elements were created at the exact same time.
    End Sub 'CompareAttributes


    ' Convert the contents of the specified security element 
    ' to hash codes stored in a hash table.
    Private Shared Sub ConvertToHashTable(ByVal
 xmlElement As SecurityElement)
        ' Create a hash table to hold hash codes of the security elements.
        Dim xmlAsHash As New
 Hashtable()
        Dim rootIndex As Integer
 = xmlElement.GetHashCode()
        xmlAsHash.Add(rootIndex, "root")
        Dim parentNum As Integer
 = 0

        Dim xmlParent As SecurityElement
        For Each xmlParent In
 xmlElement.Children
            parentNum += 1
            xmlAsHash.Add(xmlParent.GetHashCode(), "parent"
 + parentNum.ToString())
            If Not (xmlParent.Children Is
 Nothing) AndAlso xmlParent.Children.Count
 > 0 Then
                Dim childNum As Integer
 = 0
                Dim xmlChild As SecurityElement
                For Each xmlChild In
 xmlParent.Children
                    childNum += 1
                    xmlAsHash.Add(xmlChild.GetHashCode(), "child"
 + childNum.ToString())
                Next xmlChild
            End If
        Next xmlParent

    End Sub 'ConvertToHashTable


    ' Delete the specified security element if the current time is past
    ' the time stored in the destroytime tag.
    Private Shared Function
 DestroyTree(ByVal xmlElement As SecurityElement)
 As SecurityElement
        Dim localXmlElement As SecurityElement
 = xmlElement
        Dim destroyElement As SecurityElement
 = localXmlElement.SearchForChildByTag("destroytime")

        ' Verify that a destroytime tag exists.
        If Not (localXmlElement.SearchForChildByTag("destroytime")
 Is Nothing) Then
            ' Retrieve the destroytime text to get the time 
            ' the tree can be destroyed.
            Dim storedDestroyTime As String
 = localXmlElement.SearchForTextOfTag("destroytime")
            Dim destroyTime As DateTime = DateTime.Parse(storedDestroyTime)
            If DateTime.Now > destroyTime Then
                localXmlElement = Nothing
                Console.WriteLine("The XML security tree has been
 deleted.")
            End If
        End If

        ' Verify that xmlElement is of type SecurityElement.
        If xmlElement.GetType().Equals(GetType(System.Security.SecurityElement))
 Then
            ' Determine whether the localXmlElement object 
            ' differs from xmlElement.
            If xmlElement.Equals(localXmlElement) Then
                ' Verify that the tags, attributes and children of the
                ' two security elements are identical.
                If xmlElement.Equal(localXmlElement) Then
                    ' Return the original security element.
                    Return xmlElement
                End If
            End If
        End If

        ' Return the modified security element.
        Return localXmlElement

    End Function 'DestroyTree
End Class 'SecurityElementMembers
'
' This sample produces the following output:
' 
' The security XML tree named RootTag(XML security tree) 
' was created on 2/23/2004 1:23:00 PM and contains 2 child elements.
'<RootTag creationdate="2/23/2004 1:23:00 PM">XML security
 tree
'   <destroytime>2/23/2004 1:23:01 PM</destroytime>
'   <WindowsMembership.WindowsRole version="1.00"
'                                  creationdate="2/23/2004 1:23:00
 PM">
'      <BabyElement>This is a child element.</BabyElement>
'   </WindowsMembership.WindowsRole>
'</RootTag>
'
'This sample completed successfully; press Exit to continue.
using System;
using System.Security;
using System.Collections;

class SecurityElementMembers
{
    [STAThread]
    static void Main(string[]
 args)
    {
        SecurityElement xmlRootElement = 
            new SecurityElement("RootTag", "XML
 security tree");

        AddAttribute(xmlRootElement,"creationdate",DateTime.Now.ToString());
        AddChildElement(xmlRootElement,"destroytime",
            DateTime.Now.AddSeconds(1.0).ToString());

        SecurityElement windowsRoleElement = 
            new SecurityElement("WindowsMembership.WindowsRole");
        
        windowsRoleElement.AddAttribute("version","1.00");

        // Add a child element and a creationdate attribute.
        AddChildElement(windowsRoleElement,"BabyElement",
            "This is a child element");
        AddAttribute(windowsRoleElement,"creationdate",
            DateTime.Now.ToString());

        xmlRootElement.AddChild(windowsRoleElement);

        CompareAttributes(xmlRootElement, "creationdate");
        ConvertToHashTable(xmlRootElement);

        DisplaySummary(xmlRootElement);

        // Determine if the security element is too old to keep.
        xmlRootElement = DestroyTree(xmlRootElement);
        if (xmlRootElement != null)
        {
            string elementInXml = xmlRootElement.ToString();
            Console.WriteLine(elementInXml);
        }
        
        Console.WriteLine("This sample completed successfully; " +
            "press Enter to exit.");
        Console.ReadLine();
    }

    // Add an attribute to the specified security element.
    private static SecurityElement AddAttribute(
        SecurityElement xmlElement,
        string attributeName,
        string attributeValue)
    {
        if (xmlElement != null)
        {
            // Verify that the attribute name and value are valid XML
 formats.
            if (SecurityElement.IsValidAttributeName(attributeName)
 &&
                SecurityElement.IsValidAttributeValue(attributeValue))
            {
                // Add the attribute to the security element.
                xmlElement.AddAttribute(attributeName, attributeValue);
            }
        }
        return xmlElement;
    }

    // Add a child element to the specified security element.
    private static SecurityElement AddChildElement(
        SecurityElement parentElement,
        string tagName,
        string tagText)
    {
        if (parentElement != null)
        {
            // Ensure that the tag text is in valid XML format.
            if (!SecurityElement.IsValidText(tagText))
            {
                // Replace invalid text with valid XML text 
                // to enforce proper XML formatting.
                tagText = SecurityElement.Escape(tagText);
            }

            // Determine whether the tag is in valid XML format.
            if (SecurityElement.IsValidTag(tagName))
            {
                SecurityElement childElement;
                childElement = parentElement.SearchForChildByTag(tagName);

                if (childElement != null)
                {
                    String elementText;
                    elementText = parentElement.SearchForTextOfTag(tagName);

                    if (!elementText.Equals(tagText))
                    {
                        // Add child element to the parent security
 element.
                        parentElement.AddChild(
                            new SecurityElement(tagName, tagText));
                    }
                }
                else 
                {
                    // Add child element to the parent security element.
                    parentElement.AddChild(
                        new SecurityElement(tagName, tagText));
                }
            }
        }
        return parentElement;
    }

    // Create and display a summary sentence 
    // about the specified security element.
    private static void
 DisplaySummary(SecurityElement xmlElement)
    {
        // Retrieve tag name for the security element.
        string xmlTreeName = xmlElement.Tag.ToString();

        // Retrieve tag text for the security element.
        string xmlTreeDescription = xmlElement.Text;
        
        // Retrieve value of the creationdate attribute.
        string xmlCreationDate = xmlElement.Attribute("creationdate");
        
        // Retrieve the number of children under the security element.
        string childrenCount = xmlElement.Children.Count.ToString();

        string outputMessage = "The security XML tree named
 " + xmlTreeName;
        outputMessage += "(" + xmlTreeDescription + ")";
        outputMessage += " was created on " + xmlCreationDate + "
 and ";
        outputMessage += "contains " + childrenCount + " child elements.";

        Console.WriteLine(outputMessage);
    }

    // Compare the first two occurrences of an attribute 
    // in the specified security element.
    private static void
 CompareAttributes(
        SecurityElement xmlElement, string attributeName)
    {
        // Create a hash table containing the security element's attributes.
        Hashtable attributeKeys = xmlElement.Attributes;
        string attributeValue = attributeKeys[attributeName].ToString();

        foreach(SecurityElement xmlChild in
 xmlElement.Children)
        {
            if (attributeValue.Equals(xmlChild.Attribute(attributeName)))
            {
                // The security elements were created at the exact same
 time.
            }
        }
    }

    // Convert the contents of the specified security element 
    // to hash codes stored in a hash table.
    private static void
 ConvertToHashTable(SecurityElement xmlElement)
    {
        // Create a hash table to hold hash codes of the security elements.
        Hashtable xmlAsHash = new Hashtable();
        int rootIndex = xmlElement.GetHashCode();
        xmlAsHash.Add(rootIndex, "root");

        int parentNum = 0;

        foreach(SecurityElement xmlParent in
 xmlElement.Children)
        {
            parentNum++;
            xmlAsHash.Add(xmlParent.GetHashCode(), "parent" + parentNum);
            if ((xmlParent.Children != null)
 && 
                (xmlParent.Children.Count > 0))
            {
                int childNum = 0;
                foreach(SecurityElement xmlChild in
 xmlParent.Children)
                {
                    childNum++;
                    xmlAsHash.Add(xmlChild.GetHashCode(), "child" + childNum);
                }
            }
        }
    }

    // Delete the specified security element if the current time is
 past
    // the time stored in the destroytime tag.
    private static SecurityElement DestroyTree(SecurityElement
 xmlElement)
    {
        SecurityElement localXmlElement = xmlElement;
        SecurityElement destroyElement = 
            localXmlElement.SearchForChildByTag("destroytime");

        // Verify that a destroytime tag exists.
        if (localXmlElement.SearchForChildByTag("destroytime")
 != null)
        {
            // Retrieve the destroytime text to get the time 
            // the tree can be destroyed.
            string storedDestroyTime =
                localXmlElement.SearchForTextOfTag("destroytime");

            DateTime destroyTime = DateTime.Parse(storedDestroyTime);
            if (DateTime.Now > destroyTime)
            {
                localXmlElement = null;
                Console.WriteLine("The XML security tree has been deleted.");
            }
        }

        // Verify that xmlElement is of type SecurityElement.
        if (xmlElement.GetType().Equals(
            typeof(System.Security.SecurityElement)))
        {
            // Determine whether the localXmlElement object 
            // differs from xmlElement.
            if (xmlElement.Equals(localXmlElement))
            {
                // Verify that the tags, attributes and children of
 the
                // two security elements are identical.
                if (xmlElement.Equal(localXmlElement))
                {
                    // Return the original security element.
                    return xmlElement;
                }
            }
        }

        // Return the modified security element.
        return localXmlElement;
    }
}
//
// This sample produces the following output:
// 
// The security XML tree named RootTag(XML security tree) 
// was created on 2/23/2004 1:23:00 PM and contains 2 child elements.
//<RootTag creationdate="2/23/2004 1:23:00 PM">XML security
 tree
//   <destroytime>2/23/2004 1:23:01 PM</destroytime>
//   <WindowsMembership.WindowsRole version="1.00"
//                                  creationdate="2/23/2004 1:23:00
 PM">
//      <BabyElement>This is a child element.</BabyElement>
//   </WindowsMembership.WindowsRole>
//</RootTag>
//
//This sample completed successfully; press Exit to continue.
using namespace System;
using namespace System::Security;
using namespace System::Collections;
ref class SecurityElementMembers
{
public:

   [STAThread]
   int TestSecurityElementMembers()
   {
      SecurityElement^ xmlRootElement = gcnew SecurityElement( L"RootTag",L"XML
 security tree" );

      AddAttribute( xmlRootElement, L"creationdate", DateTime::Now.ToString()
 );
      AddChildElement( xmlRootElement, L"destroytime", DateTime::Now.AddSeconds(
 1.0 ).ToString() );
      
      SecurityElement^ windowsRoleElement = gcnew SecurityElement( L"WindowsMembership.WindowsRole"
 );

      windowsRoleElement->AddAttribute( L"version", L"1.00"
 );

      // Add a child element and a creationdate attribute.
      AddChildElement( windowsRoleElement, L"BabyElement", L"This
 is a child element" );
      AddAttribute( windowsRoleElement, L"creationdate", DateTime::Now.ToString()
 );
      
      xmlRootElement->AddChild( windowsRoleElement );

      CompareAttributes( xmlRootElement, L"creationdate" );
      ConvertToHashTable( xmlRootElement );
      DisplaySummary( xmlRootElement );

      // Determine if the security element is too old to keep.
      xmlRootElement = DestroyTree( xmlRootElement );
      if ( xmlRootElement != nullptr )
      {
         String^ elementInXml = xmlRootElement->ToString();

         Console::WriteLine( elementInXml );
      }

      Console::WriteLine( L"This sample completed successfully; "
      L"press Enter to exit." );
      Console::ReadLine();
      return 1;
   }


private:

   // Add an attribute to the specified security element.
   static SecurityElement^ AddAttribute( SecurityElement^ xmlElement,
 String^ attributeName, String^ attributeValue )
   {
      if ( xmlElement != nullptr )
      {
         // Verify that the attribute name and value are valid XML formats.
         if ( SecurityElement::IsValidAttributeName( attributeName
 ) &&
                SecurityElement::IsValidAttributeValue( attributeValue ) )
         {
            // Add the attribute to the security element.
            xmlElement->AddAttribute( attributeName, attributeValue );
         }
      }

      return xmlElement;
   }


   // Add a child element to the specified security element.
   static SecurityElement^ AddChildElement( SecurityElement^ parentElement,
 String^ tagName, String^ tagText )
   {
      if ( parentElement != nullptr )
      {
         // Ensure that the tag text is in valid XML format.
         if (  !SecurityElement::IsValidText( tagText ) )
         {
            // Replace invalid text with valid XML text 
            // to enforce proper XML formatting.
            tagText = SecurityElement::Escape( tagText );
         }

         // Determine whether the tag is in valid XML format.
         if ( SecurityElement::IsValidTag( tagName ) )
         {
            SecurityElement^ childElement;
            childElement = parentElement->SearchForChildByTag( tagName );
            if ( childElement != nullptr )
            {
               String^ elementText;
               elementText = parentElement->SearchForTextOfTag( tagName );
               if (  !elementText->Equals( tagText ) )
               {
                  // Add child element to the parent security element.
                  parentElement->AddChild( gcnew SecurityElement( tagName,tagText
 ) );
               }
            }
            else
            {
               // Add child element to the parent security element.
               parentElement->AddChild( gcnew SecurityElement( tagName,tagText
 ) );
            }
         }
      }

      return parentElement;
   }


   // Create and display a summary sentence 
   // about the specified security element.
   static void DisplaySummary( SecurityElement^
 xmlElement )
   {
      // Retrieve tag name for the security element.
      String^ xmlTreeName = xmlElement->Tag->ToString();
      // Retrieve tag text for the security element.
      String^ xmlTreeDescription = xmlElement->Text;
      // Retrieve value of the creationdate attribute.
      String^ xmlCreationDate = xmlElement->Attribute(L"creationdate");
      // Retrieve the number of children under the security element.
      String^ childrenCount = xmlElement->Children->Count.ToString();
      String^ outputMessage = String::Format( L"The security XML tree named
 {0}", xmlTreeName );
      outputMessage = String::Concat( outputMessage, String::Format( L"({0})",
 xmlTreeDescription ) );
      outputMessage = String::Concat( outputMessage, String::Format( L" was
 created on {0} and ", xmlCreationDate ) );
      outputMessage = String::Concat( outputMessage, String::Format( L"contains
 {0} child elements.", childrenCount ) );
      Console::WriteLine( outputMessage );
   }

   // Compare the first two occurrences of an attribute 
   // in the specified security element.
   static void CompareAttributes( SecurityElement^
 xmlElement, String^ attributeName )
   {
      // Create a hash table containing the security element's attributes.
      Hashtable^ attributeKeys = xmlElement->Attributes;
      String^ attributeValue = attributeKeys[ attributeName ]->ToString();
      IEnumerator^ myEnum = xmlElement->Children->GetEnumerator();
      while ( myEnum->MoveNext() )
      {
         SecurityElement^ xmlChild = safe_cast<SecurityElement^>(myEnum->Current);
         if ( attributeValue->Equals( xmlChild->Attribute(attributeName)
 ) )
         {
            // The security elements were created at the exact same
 time.
         }
      }
   }

   // Convert the contents of the specified security element 
   // to hash codes stored in a hash table.
   static void ConvertToHashTable( SecurityElement^
 xmlElement )
   {
      // Create a hash table to hold hash codes of the security elements.
      Hashtable^ xmlAsHash = gcnew Hashtable;
      int rootIndex = xmlElement->GetHashCode();
      xmlAsHash->Add( rootIndex, L"root" );
      int parentNum = 0;
      IEnumerator^ myEnum1 = xmlElement->Children->GetEnumerator();
      while ( myEnum1->MoveNext() )
      {
         SecurityElement^ xmlParent = safe_cast<SecurityElement^>(myEnum1->Current);
         parentNum++;
         xmlAsHash->Add( xmlParent->GetHashCode(), String::Format( L"parent{0}",
 parentNum ) );
         if ( (xmlParent->Children != nullptr) && (xmlParent->Children->Count
 > 0) )
         {
            int childNum = 0;
            IEnumerator^ myEnum2 = xmlParent->Children->GetEnumerator();
            while ( myEnum2->MoveNext() )
            {
               SecurityElement^ xmlChild = safe_cast<SecurityElement^>(myEnum2->Current);
               childNum++;
               xmlAsHash->Add( xmlChild->GetHashCode(), String::Format( L"child{0}",
 childNum ) );
            }
         }
      }
   }

   // Delete the specified security element if the current time is past
   // the time stored in the destroytime tag.
   static SecurityElement^ DestroyTree( SecurityElement^ xmlElement
 )
   {
      SecurityElement^ localXmlElement = xmlElement;
      SecurityElement^ destroyElement = localXmlElement->SearchForChildByTag(
 L"destroytime" );
      
      // Verify that a destroytime tag exists.
      if ( localXmlElement->SearchForChildByTag( L"destroytime"
 ) != nullptr )
      {
         // Retrieve the destroytime text to get the time 
         // the tree can be destroyed.
         String^ storedDestroyTime = localXmlElement->SearchForTextOfTag( L"destroytime"
 );
         DateTime destroyTime = DateTime::Parse( storedDestroyTime );
         if ( DateTime::Now > destroyTime )
         {
            localXmlElement = nullptr;
            Console::WriteLine( L"The XML security tree has been deleted."
 );
         }
      }

      
      // Verify that xmlElement is of type SecurityElement.
      if ( xmlElement->GetType()->Equals( System::Security::SecurityElement::typeid
 ) )
      {
         // Determine whether the localXmlElement object 
         // differs from xmlElement.
         if ( xmlElement->Equals( localXmlElement ) )
         {
            // Verify that the tags, attributes and children of the
            // two security elements are identical.
            if ( xmlElement->Equal( localXmlElement ) )
            {
               // Return the original security element.
               return xmlElement;
            }
         }
      }

      // Return the modified security element.
      return localXmlElement;
   }

};

int main()
{
   SecurityElementMembers^ sem = gcnew SecurityElementMembers;
   sem->TestSecurityElementMembers();
}

//
// This sample produces the following output:
// 
// The security XML tree named RootTag(XML security tree) 
// was created on 2/23/2004 1:23:00 PM and contains 2 child elements.
//<RootTag creationdate="2/23/2004 1:23:00 PM">XML security
 tree
//   <destroytime>2/23/2004 1:23:01 PM</destroytime>
//   <WindowsMembership.WindowsRole version="1.00"
//                                  creationdate="2/23/2004 1:23:00
 PM">
//      <BabyElement>This is a child element.</BabyElement>
//   </WindowsMembership.WindowsRole>
//</RootTag>
//
//This sample completed successfully; press Exit to continue.
import System.*;
import System.Security.*;
import System.Collections.*;

class SecurityElementMembers
{
    /** @attribute STAThread()
     */
    public static void main(String[]
 args)
    {
        SecurityElement xmlRootElement = new SecurityElement(
            "RootTag", "XML security tree");

        AddAttribute(xmlRootElement, "creationdate", 
            DateTime.get_Now().ToString());
        AddChildElement(xmlRootElement, "destroytime", 
            DateTime.get_Now().AddSeconds(1.0).ToString());

        SecurityElement windowsRoleElement 
            = new SecurityElement("WindowsMembership.WindowsRole");

        windowsRoleElement.AddAttribute("version", "1.00");

        // Add a child element and a creationdate attribute.
        AddChildElement(windowsRoleElement, "BabyElement", 
            "This is a child element");
        AddAttribute(windowsRoleElement, "creationdate", 
            DateTime.get_Now().ToString());

        xmlRootElement.AddChild(windowsRoleElement);

        CompareAttributes(xmlRootElement, "creationdate");
        ConvertToHashTable(xmlRootElement);

        DisplaySummary(xmlRootElement);
        // Determine if the security element is too old to keep.
        xmlRootElement = DestroyTree(xmlRootElement);
        if (xmlRootElement != null) {
            String elementInXml = xmlRootElement.ToString();
            Console.WriteLine(elementInXml);
        }

        Console.WriteLine("This sample completed successfully; " 
            + "press Enter to exit.");
        Console.ReadLine();
    } //main

    // Add an attribute to the specified security element.
    private static SecurityElement AddAttribute(SecurityElement
 xmlElement,
        String attributeName, String attributeValue)
    {
        if (xmlElement != null) {
            // Verify that the attribute name and value are valid XML
 formats.
            if (SecurityElement.IsValidAttributeName(attributeName)
 
                && SecurityElement.IsValidAttributeValue(attributeValue))
 {
                // Add the attribute to the security element.
                xmlElement.AddAttribute(attributeName, attributeValue);
            }
        }
        return xmlElement;
    } //AddAttribute

    // Add a child element to the specified security element.
    private static SecurityElement AddChildElement(
        SecurityElement parentElement, String tagName, String tagText)
    {
        if (parentElement != null) {
            // Ensure that the tag text is in valid XML format.
            if (!(SecurityElement.IsValidText(tagText))) {
                // Replace invalid text with valid XML text 
                // to enforce proper XML formatting.
                tagText = SecurityElement.Escape(tagText);
            }
            
            // Determine whether the tag is in valid XML format.
            if (SecurityElement.IsValidTag(tagName)) {
                SecurityElement childElement;
                childElement = parentElement.SearchForChildByTag(tagName);

                if (childElement != null) {
                    String elementText;
                    elementText = parentElement.SearchForTextOfTag(tagName);
                    if (!(elementText.Equals(tagText))) {
                        // Add child element to the parent security
 element.
                        parentElement.AddChild(new SecurityElement(tagName
,
 
                            tagText));
                    }
                }
                else {
                    // Add child element to the parent security element.
                    parentElement.AddChild(new SecurityElement(tagName
,
                        tagText));
                }
            }
        }
        return parentElement;
    } //AddChildElement

    // Create and display a summary sentence 
    // about the specified security element.
    private static void
 DisplaySummary(SecurityElement xmlElement)
    {
        // Retrieve tag name for the security element.
        String xmlTreeName = xmlElement.get_Tag().ToString();
        // Retrieve tag text for the security element.
        String xmlTreeDescription = xmlElement.get_Text();
        // Retrieve value of the creationdate attribute.
        String xmlCreationDate = xmlElement.Attribute("creationdate");
        // Retrieve the number of children under the security element.
        String childrenCount 
            = System.Convert.ToString(xmlElement.get_Children().get_Count());
        String outputMessage = "The security XML tree named " + xmlTreeName;
        outputMessage += "(" + xmlTreeDescription + ")";
        outputMessage += " was created on " + xmlCreationDate + "
 and ";
        outputMessage += "contains " + childrenCount + " child elements.";
        Console.WriteLine(outputMessage);
    } //DisplaySummary

    // Compare the first two occurrences of an attribute 
    // in the specified security element.
    private static void
 CompareAttributes(SecurityElement xmlElement,
        String attributeName)
    {
        // Create a hash table containing the security element's attributes.
        Hashtable attributeKeys = xmlElement.get_Attributes();
        String attributeValue = attributeKeys.get_Item(attributeName).ToString();
        for (int iCtr = 0; iCtr 
            < xmlElement.get_Children().get_Count(); iCtr++) {
            SecurityElement xmlChild 
                = (SecurityElement)xmlElement.get_Children().get_Item(iCtr);
            if (attributeValue.Equals(xmlChild.Attribute(attributeName)))
 {
            }
        }
    } //CompareAttributes

    // The security elements were created at the exact same time.
    // Convert the contents of the specified security element 
    // to hash codes stored in a hash table.
    private static void
 ConvertToHashTable(SecurityElement xmlElement)
    {
        // Create a hash table to hold hash codes of the security elements.
        Hashtable xmlAsHash = new Hashtable();
        int rootIndex = xmlElement.GetHashCode();
        xmlAsHash.Add((Int32)rootIndex, "root");

        int parentNum = 0;
        for (int iCtr1 = 0; iCtr1 
            < xmlElement.get_Children().get_Count(); iCtr1++) {
            SecurityElement xmlParent 
                = (SecurityElement)xmlElement.get_Children().get_Item(iCtr1);
            parentNum++;
            xmlAsHash.Add((Int32)xmlParent.GetHashCode(), "parent" + parentNum);
            if (xmlParent.get_Children() != null
 
                && xmlParent.get_Children().get_Count() > 0) {
                int childNum = 0;
                for (int iCtr2 = 0; iCtr2 
                    < xmlParent.get_Children().get_Count(); iCtr2++) {
                    SecurityElement xmlChild = (SecurityElement)xmlParent.
                        get_Children().get_Item(iCtr2);
                    childNum++;
                    xmlAsHash.Add((Int32)xmlChild.GetHashCode(), "child"
 
                        + childNum);
                }
            }
        }
    } //ConvertToHashTable

    // Delete the specified security element if the current time is
 past
    // the time stored in the destroytime tag.
    private static SecurityElement DestroyTree(SecurityElement
 xmlElement)
    {
        SecurityElement localXmlElement = xmlElement;
        SecurityElement destroyElement 
            = localXmlElement.SearchForChildByTag("destroytime");
        // Verify that a destroytime tag exists.
        if (localXmlElement.SearchForChildByTag("destroytime")
 != null) {
            // Retrieve the destroytime text to get the time 
            // the tree can be destroyed.

            String storedDestroyTime = localXmlElement.SearchForTextOfTag(
                "destroytime");

            DateTime destroyTime = DateTime.Parse(storedDestroyTime);
            if ((DateTime.get_Now().CompareTo(destroyTime)) >
 0) {
                localXmlElement = null;
                Console.WriteLine("The XML security tree has been deleted.");
            }
        }
        // Verify that xmlElement is of type SecurityElement.

        if (xmlElement.GetType().Equals(
            System.Security.SecurityElement.class.ToType())) {
            // Determine whether the localXmlElement object 
            // differs from xmlElement.
            if (xmlElement.Equals(localXmlElement)) {
                // Verify that the tags, attributes and children of
 the
                // two security elements are identical.
                if (xmlElement.Equal(localXmlElement)) {
                    // Return the original security element.
                    return xmlElement;
                }
            }
        }
        // Return the modified security element.
        return localXmlElement;
    } //DestroyTree
} //SecurityElementMembers
//
// This sample produces the following output:
// 
// The security XML tree named RootTag(XML security tree) 
// was created on 2/23/2004 1:23:00 PM and contains 2 child elements.
//<RootTag creationdate="2/23/2004 1:23:00 PM">XML security
 tree
//   <destroytime>2/23/2004 1:23:01 PM</destroytime>
//   <WindowsMembership.WindowsRole version="1.00"
//                                  creationdate="2/23/2004 1:23:00
 PM">
//      <BabyElement>This is a child element.</BabyElement>
//   </WindowsMembership.WindowsRole>
//</RootTag>
//
//This sample completed successfully; press Exit to continue.
継承階層継承階層
System.Object
  System.Security.SecurityElement
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバ場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

SecurityElement コンストラクタ (String, String)

SecurityElement クラス新しインスタンスを、指定したタグテキスト使用して初期化します。

名前空間: System.Security
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

例外例外
例外種類条件

ArgumentNullException

tag パラメータnull 参照 (Visual Basic では Nothing) です。

ArgumentException

tag パラメータまたは text パラメータが、XML無効です。

解説解説
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

SecurityElement コンストラクタ (String)

タグ指定して、SecurityElement クラス新しインスタンス初期化します。

名前空間: System.Security
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

public SecurityElement (
    string tag
)
public:
SecurityElement (
    String^ tag
)
public SecurityElement (
    String tag
)
public function SecurityElement (
    tag : String
)

パラメータ

tag

XML 要素タグ名。

例外例外
例外種類条件

ArgumentNullException

tag パラメータnull 参照 (Visual Basic では Nothing) です。

ArgumentException

tag パラメータXML無効です。

解説解説
使用例使用例

SecurityElement コンストラクタ使用して新しSecurityElement オブジェクト作成する方法次のコード例示します。このコード例は、SecurityElement クラストピック取り上げているコード例一部分です。

Dim windowsRoleElement As New
 SecurityElement("WindowsMembership.WindowsRole")
SecurityElement windowsRoleElement = 
    new SecurityElement("WindowsMembership.WindowsRole");
SecurityElement^ windowsRoleElement = gcnew SecurityElement( L"WindowsMembership.WindowsRole"
 );
SecurityElement windowsRoleElement 
    = new SecurityElement("WindowsMembership.WindowsRole");
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

SecurityElement コンストラクタ


SecurityElement プロパティ


SecurityElement メソッド


パブリック メソッドパブリック メソッド

  名前 説明
パブリック メソッド AddAttribute XML 要素に名前/値属性追加します
パブリック メソッド AddChild XML 要素子要素追加します
パブリック メソッド Attribute XML 要素で、名前を指定して属性検索します
パブリック メソッド Copy 現在の SecurityElement オブジェクトコピー作成して返します
パブリック メソッド Equal 2 つXML 要素オブジェクト等しかどうか比較します。
パブリック メソッド Equals  オーバーロードされます2 つObject インスタンス等しかどうか判断します。 ( Object から継承されます。)
パブリック メソッド Escape 文字列内の無効な XML 文字等価有効な XML置き換えます
パブリック メソッド FromString XML エンコード済み文字列からセキュリティ要素作成します
パブリック メソッド GetHashCode  特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用適してます。 ( Object から継承されます。)
パブリック メソッド GetType  現在のインスタンスType取得します。 ( Object から継承されます。)
パブリック メソッド IsValidAttributeName 文字列有効な属性かどうか判断します
パブリック メソッド IsValidAttributeValue 文字列有効な属性値かどうか判断します
パブリック メソッド IsValidTag 文字列有効なタグかどうか判断します
パブリック メソッド IsValidText 文字列XML 要素内のテキストとして有効かどうか判断します
パブリック メソッド ReferenceEquals  指定した複数Object インスタンス同一かどうか判断します。 ( Object から継承されます。)
パブリック メソッド SearchForChildByTag タグ名を指定して子要素検索します
パブリック メソッド SearchForTextOfTag タグ名を指定して子要素検索し格納されているテキスト返します
パブリック メソッド ToString オーバーライドされますXML 要素その構成属性子要素、およびテキスト文字列形式生成します
参照参照

関連項目

SecurityElement クラス
System.Security 名前空間

SecurityElement メンバ

セキュリティ オブジェクトエンコーディング用の XML オブジェクト モデル表します。このクラス継承できません。

SecurityElement データ型公開されるメンバを以下の表に示します


パブリック コンストラクタパブリック コンストラクタ
パブリック プロパティパブリック プロパティ
パブリック メソッドパブリック メソッド
  名前 説明
パブリック メソッド AddAttribute XML 要素に名前/値属性追加します
パブリック メソッド AddChild XML 要素子要素追加します
パブリック メソッド Attribute XML 要素で、名前を指定して属性検索します
パブリック メソッド Copy 現在の SecurityElement オブジェクトコピー作成して返します
パブリック メソッド Equal 2 つXML 要素オブジェクト等しかどうか比較します。
パブリック メソッド Equals  オーバーロードされます2 つObject インスタンス等しかどうか判断します。 (Object から継承されます。)
パブリック メソッド Escape 文字列内の無効な XML 文字等価有効な XML置き換えます
パブリック メソッド FromString XML エンコード済み文字列からセキュリティ要素作成します
パブリック メソッド GetHashCode  特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用適してます。 (Object から継承されます。)
パブリック メソッド GetType  現在のインスタンスType取得します。 (Object から継承されます。)
パブリック メソッド IsValidAttributeName 文字列有効な属性かどうか判断します
パブリック メソッド IsValidAttributeValue 文字列有効な属性値かどうか判断します
パブリック メソッド IsValidTag 文字列有効なタグかどうか判断します
パブリック メソッド IsValidText 文字列XML 要素内のテキストとして有効かどうか判断します
パブリック メソッド ReferenceEquals  指定した複数Object インスタンス同一かどうか判断します。 (Object から継承されます。)
パブリック メソッド SearchForChildByTag タグ名を指定して子要素検索します
パブリック メソッド SearchForTextOfTag タグ名を指定して子要素検索し格納されているテキスト返します
パブリック メソッド ToString オーバーライドされますXML 要素その構成属性子要素、およびテキスト文字列形式生成します
参照参照

関連項目

SecurityElement クラス
System.Security 名前空間



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「SecurityElement」の関連用語

SecurityElementのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



SecurityElementのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2025 Microsoft.All rights reserved.

©2025 GRAS Group, Inc.RSS