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 名であることを確認します。 XmlNamespaceManager は XmlReader によって内部的に使用されるため、処理の重複を避けるために、 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 名前空間