次の方法で共有


XmlNamespaceManager.AddNamespace メソッド

指定した名前空間をコレクションに追加します。

Public Overridable Sub AddNamespace( _
   ByVal prefix As String, _   ByVal uri As String _)
[C#]
public virtual void AddNamespace(stringprefix,stringuri);
[C++]
public: virtual void AddNamespace(String* prefix,String* uri);
[JScript]
public function AddNamespace(
   prefix : String,uri : String);

パラメータ

  • prefix
    追加する名前空間に関連付けるプリフィックス。String.Empty を使用して、既定の名前空間を追加します。

    ただし、XPath 式の名前空間の解決に XmlNamespaceManager を使用する場合は、プリフィックスを指定する必要があります。XPath 式にプリフィックスが含まれていない場合、名前空間 URI は、空の名前空間であると見なされます。XPath 式および XmlNamespaceManager の詳細については、 XmlNode.SelectNodes メソッドおよび XPathExpression.SetContext メソッドの説明を参照してください。

  • uri
    追加する名前空間。

例外

例外の種類 条件
ArgumentException prefix の値が "xml" または "xmlns" です。
ArgumentNullException prefix または uri の値が null 参照 (Visual Basic では Nothing) です。

解説

XmlNamespaceManager は、 prefix および uri の準拠性をチェックしません。

XmlReader は、プリフィックスおよび名前空間を含めて名前をチェックし、W3C の仕様に従う有効な XML 名であることを確認します。 XmlNamespaceManagerXmlReader によって内部的に使用されるため、処理の重複を避けるために、 XmlNamespaceManager はすべてのプリフィックスおよび名前空間を有効と見なします。

プリフィックスおよび名前空間が既に現在のスコープ内に存在している場合は、既存のプリフィックスと名前空間の組み合わせを置換します。異なるスコープ間で同じプリフィックスと名前空間の組み合わせが存在してもかまいません。

既定では、次のプリフィクスと名前空間のペアが XmlNamespaceManager に追加されます。これらの組み合わせはどのスコープでも確認できます。

プリフィックス 名前空間
xmlns http://www.w3.org/2000/xmlns/ (xmlns プリフィックス名前空間)
xml http://www.w3.org/XML/1998/namespace (XML 名前空間)
String.Empty String.Empty (空の名前空間)。この値には、異なるプリフィックスを再割り当てできます。たとえば、 は、既定の名前空間を空の名前空間として定義します。

使用例

[Visual Basic, C#, C++] XmlNamespaceManager を使用して、XML フラグメントの名前空間を解決する例を次に示します。

 
Imports System
Imports System.Xml

public class Sample 

  public shared sub Main() 

    Dim reader as XmlValidatingReader = Nothing

    try 

      ' Create the string containing the XML to read.
      Dim xmlFrag as String 
      xmlFrag ="<book>" & _
                     "<title>Pride And Prejudice</title>" & _
                     "<author>" & _
                     "<first-name>Jane</first-name>" & _
                     "<last-name>Austen</last-name>" & _
                     "</author>" & _
                     "<curr:price>19.95</curr:price>" & _
                     "<misc>&h;</misc>" & _
                     "</book>"  

      ' Create an XmlNamespaceManager to resolve namespaces.
      Dim nt as NameTable = new NameTable()
      Dim nsmgr as XmlNamespaceManager = new XmlNamespaceManager(nt)
      nsmgr.AddNamespace(String.Empty, "urn:samples") 'default namespace
      nsmgr.AddNamespace("curr", "urn:samples:dollar")

      ' Create an XmlParserContext.  The XmlParserContext contains all the information
      ' required to parse the XML fragment, including the entity information and the
     ' XmlNamespaceManager to use for namespace resolution.
      Dim context as XmlParserContext 
      Dim subset as String ="<!ENTITY h 'hardcover'>"
      context=new XmlParserContext(nt, nsmgr, "book", Nothing, Nothing, subset, Nothing, Nothing, XmlSpace.None)

      ' Create the reader.
      reader = new XmlValidatingReader(xmlFrag, XmlNodeType.Element, context)
      reader.ValidationType = ValidationType.None

      ' Parse the file and display the node values.
      while(reader.Read()) 
        if (reader.HasValue)
          Console.WriteLine("{0} [{1}] = {2}",reader.NodeType, reader.Name, reader.Value)
        else
          Console.WriteLine("{0} [{1}]",reader.NodeType, reader.Name)
        end if
      end while
    
    finally 
     if not (reader Is Nothing) then
        reader.Close()
    end if
  end try 
end sub
end class

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

public class Sample {

  public static void Main() {

    XmlValidatingReader reader = null;

    try {

      // Create the string containing the XML to read.
      String xmlFrag="<book>" +
                     "<title>Pride And Prejudice</title>" +
                     "<author>" +
                     "<first-name>Jane</first-name>" +
                     "<last-name>Austen</last-name>" +
                     "</author>" +
                     "<curr:price>19.95</curr:price>" +
                     "<misc>&h;</misc>" +
                     "</book>";  

      // Create an XmlNamespaceManager to resolve namespaces.
      NameTable nt = new NameTable();
      XmlNamespaceManager nsmgr = new XmlNamespaceManager(nt);
      nsmgr.AddNamespace(String.Empty, "urn:samples"); //default namespace
      nsmgr.AddNamespace("curr", "urn:samples:dollar");

      // Create an XmlParserContext.  The XmlParserContext contains all the information
      // required to parse the XML fragment, including the entity information and the
     // XmlNamespaceManager to use for namespace resolution.
      XmlParserContext context;
      String subset="<!ENTITY h 'hardcover'>";
      context=new XmlParserContext(nt, nsmgr, "book", null, null, subset, null, null, XmlSpace.None);

      // Create the reader.
      reader = new XmlValidatingReader(xmlFrag, XmlNodeType.Element, context);
      reader.ValidationType = ValidationType.None;

      // Parse the file and display the node values.
      while(reader.Read()) {
        if (reader.HasValue)
          Console.WriteLine("{0} [{1}] = {2}",reader.NodeType, reader.Name, reader.Value);
        else
          Console.WriteLine("{0} [{1}]",reader.NodeType, reader.Name);
      }
    } 
    finally {
      if (reader != null)
        reader.Close();
    }
  } 
} // End class

[C++] 
#using <mscorlib.dll>
#using <System.Xml.dll>
using namespace System;
using namespace System::Xml;

int main() {

    XmlValidatingReader* reader = 0;

    try {

      // Create the string containing the XML to read.
      String* xmlFrag=S"<book>"
                      S"<title>Pride And Prejudice</title>"
                      S"<author>"
                      S"<first-name>Jane</first-name>"
                      S"<last-name>Austen</last-name>"
                      S"</author>"
                      S"<curr:price>19.95</curr:price>"
                      S"<misc>&h;</misc>"
                      S"</book>";  

      // Create an XmlNamespaceManager to resolve namespaces.
      NameTable* nt = new NameTable();
      XmlNamespaceManager* nsmgr = new XmlNamespaceManager(nt);
      nsmgr->AddNamespace(String::Empty, S"urn:samples"); //default namespace
      nsmgr->AddNamespace(S"curr", S"urn:samples:dollar");

      // Create an XmlParserContext.  The XmlParserContext contains all the information
      // required to parse the XML fragment, including the entity information and the
      // XmlNamespaceManager to use for namespace resolution.
      XmlParserContext* context;
      String* subset=S"<!ENTITY h 'hardcover'>";
      context=new XmlParserContext(nt, nsmgr, S"book", 0, 0, subset, 0, 0, XmlSpace::None);

      // Create the reader.
      reader = new XmlValidatingReader(xmlFrag, XmlNodeType::Element, context);
      reader->ValidationType = ValidationType::None;

      // Parse the file and display the node values.
      while(reader->Read()) {
        if (reader->HasValue)
          Console::WriteLine(S"{0} [{1}] = {2}", __box(reader->NodeType),reader->Name,reader->Value);
        else
          Console::WriteLine(S"{0} [{1}]", __box(reader->NodeType),reader->Name);
      }
    } 
    __finally {
      if (reader != 0)
        reader->Close();
    }
} 

[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

参照

XmlNamespaceManager クラス | XmlNamespaceManager メンバ | System.Xml 名前空間