次の方法で共有


XmlConvert.EncodeName メソッド

名前を有効な XML 名に変換します。

Public Shared Function EncodeName( _
   ByVal name As String _) As String
[C#]
public static string EncodeName(stringname);
[C++]
public: static String* EncodeName(String* name);
[JScript]
public static function EncodeName(
   name : String) : String;

パラメータ

  • name
    変換する対象の名前。

戻り値

エスケープ文字列で置換された無効な文字を含む名前を返します。

解説

このメソッドは、スキーマのサポートや存在がない XML 名に割り当てる必要のある空白、半角カタカナなどの無効な文字を変換します。無効な文字は、エスケープされた数値エンティティ エンコーディングに変換されます。

エスケープ文字は "_" です。W3C『Extensible Markup Language (XML) 1.0』の仕様に適合しない XML 名の文字は、_xHHHH_ としてエスケープされます。HHHH 文字列は、文字の 4 桁の 16 進 UCS-2 コードを先頭が最上位ビットになる順で表しています。たとえば、Order Details という名前は Order_x0020_Details としてエンコードされます。

アンダースコア (_) 文字は、後ろに文字シーケンスを指定しない限りエスケープする必要はありません。アンダースコア (_) の後に文字シーケンスが付くと、名前のデコード時にエスケープ シーケンスと誤って解釈される場合があります。たとえば、Order_Details はエンコードされませんが、Order_x0020_ は Order_x005f_x0020_ としてエンコードされます。短縮形は許可されません。たとえば、_x20_ および __ という形式は生成されません。

このメソッドは、名前が XML 仕様に従って有効であることを保証します。コロンはどこにでも指定できます。したがって、W3C の名前空間の仕様 (www.w3.org/TR/REC-xml-names) に従えば無効な名前である可能性あります。有効な名前空間限定名であることを保証するには、プリフィックスおよびローカル名部分に対しては EncodeLocalName を使用し、結果をコロンで結合します。

使用例

[Visual Basic, C#, C++] 名前をエンコードおよびデコードする例を次に示します。

 
Imports System
Imports System.IO
Imports System.Xml

public class Sample

  public shared sub Main()

     ' Encode and decode a name with spaces.
     Dim name1 as string = XmlConvert.EncodeName("Order Detail")
     Console.WriteLine("Encoded name: " + name1)
     Console.WriteLine("Decoded name: " + XmlConvert.DecodeName(name1))

     ' Encode and decode a local name.
     Dim name2 as string= XmlConvert.EncodeLocalName("a:book")
     Console.WriteLine("Encoded local name: " + name2)
     Console.WriteLine("Decoded local name: " + XmlConvert.DecodeName(name2))

  end sub
end class

[C#] 
using System;
using System.IO;
using System.Xml;

public class Sample
{

  public static void Main()
  {

     // Encode and decode a name with spaces.
     string name1 = XmlConvert.EncodeName("Order Detail");
     Console.WriteLine("Encoded name: " + name1);
     Console.WriteLine("Decoded name: " + XmlConvert.DecodeName(name1));

     // Encode and decode a local name.
     string name2 = XmlConvert.EncodeLocalName("a:book");
     Console.WriteLine("Encoded local name: " + name2);
     Console.WriteLine("Decoded local name: " + XmlConvert.DecodeName(name2));

  }
}

[C++] 

#using <mscorlib.dll>
#using <System.dll>
#using <System.XML.dll>

using namespace System;
using namespace System::IO;
using namespace System::Xml;

int main()
{
   // Encode and decode a name with spaces.
   String* name1 = XmlConvert::EncodeName(S"Order Detail");
   Console::WriteLine( S"Encoded name: {0}", name1);
   Console::WriteLine( S"Decoded name: {0}", XmlConvert::DecodeName(name1));

   // Encode and decode a local name.
   String*    name2 = XmlConvert::EncodeLocalName(S"a:book");
   Console::WriteLine( S"Encoded local name: {0}", name2);
   Console::WriteLine( S"Decoded local name: {0}", XmlConvert::DecodeName(name2));
}

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard

参照

XmlConvert クラス | XmlConvert メンバ | System.Xml 名前空間 | EncodeLocalName | DecodeName