XML
System.Xml
[00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 ]
1.0.5000.0
2.0.0.0
4.0.0.0
All public static members of this type are safe for multithreaded operations. No instance members are guaranteed to be thread safe.
System.Object
System.Collections.IEnumerable
System.Xml.IXmlNamespaceResolver
For general information about how namespaces are declared and used in XML documents, see Managing Namespaces in an XML Document.
stores prefixes and namespaces as strings. Here's a summary of management and lookup tasks you can perform with this class. For more information and examples, follow the links to the reference page for each method or property.
-
To
Use
-
Add a namespace
method
-
Remove a namespace
method
-
Find the URI for the default namespace
property
-
Find the URI for a namespace prefix
method
-
Find the prefix for a namespace URI
method
-
Get a list of namespaces in the current node
method
-
Scope a namespace
and methods
-
Check whether a prefix is defined in the current scope
method
-
Get the name table used to look up prefixes and URIs
property
To add namespaces to the namespace manager, you create a object and then use the method. Default prefix and namespace pairs are automatically added to the namespace manager on creation.
When you create the namespace manager, you can specify a name table from the , , or class, and then use the method to add the namespaces.
You can supply the object as a parameter to the or method of the class to execute XPath query expressions that reference namespace-qualified element and attribute names.
The namespace manager assumes that prefixes and namespaces have already been verified and conform to the W3C Namespaces specification. The namespace manager does not perform any validation.
The namespace manager atomizes the strings when they are added by using the method and when a lookup is performed by using the or method.
The namespace manager implements enumeration support in addition to adding and retrieving namespaces. You can loop through the information saved in the namespace manager by using the foreach construct. For example, if you create a namespace manager with the name nsmanager, you can iterate through the table by using foreach (String prefix in nsmanager).
Because the namespace manager provides a string comparison with the prefix and namespaces as objects, there is a performance improvement when using the namespace manager over the direct comparison of a string.
The following code example shows how to bind the prefix xsd with the namespace URI of http://www.w3.org/2001/XMLSchema and add it to the namespace manager:
nsmgr.AddNamespace("xsd", "http://www.w3.org/2001/XMLSchema")
nsmgr.AddNamespace("xsd", "http://www.w3.org/2001/XMLSchema");
You can then find the namespace by using the method:
nsmgr.LookupNamespace("xsd")
nsmgr.LookupNamespace("xsd");
The following example creates an by using the name table from an XML reader:
Dim reader As New XmlTextReader("myfile.xml")
Dim nsmanager As New XmlNamespaceManager(reader.NameTable)
nsmanager.AddNamespace("msbooks", "www.microsoft.com/books")
nsmanager.PushScope()
nsmanager.AddNamespace("msstore", "www.microsoft.com/store")
While reader.Read()
Console.WriteLine("Reader Prefix:{0}", reader.Prefix)
Console.WriteLine("XmlNamespaceManager Prefix:{0}",
nsmanager.LookupPrefix(nsmanager.NameTable.Get(reader.NamespaceURI)))
End While
XmlTextReader reader = new XmlTextReader("myfile.xml");
XmlNamespaceManager nsmanager = new XmlNamespaceManager(reader.NameTable);
nsmanager.AddNamespace("msbooks", "www.microsoft.com/books");
nsmanager.PushScope();
nsmanager.AddNamespace("msstore", "www.microsoft.com/store");
while (reader.Read())
{
Console.WriteLine("Reader Prefix:{0}", reader.Prefix);
Console.WriteLine("XmlNamespaceManager Prefix:{0}",
nsmanager.LookupPrefix(nsmanager.NameTable.Get(reader.NamespaceURI)));
}
Resolves, adds, and removes namespaces to a collection and provides scope management for these namespaces.
Constructor
1.0.5000.0
2.0.0.0
4.0.0.0
is .
The name table is used to look up prefixes and namespaces. An existing name table with pre-atomized strings can be specified in the constructor. There are several advantages in doing so. For example, if the name table of an object is used, after each read, any namespace and prefix strings pushed into the name table can be re-used by .
For more information on atomized strings, see .
If you specify an existing name table, any namespaces in the name table are not automatically added to . You must use and to add or remove namespaces.
Initializes a new instance of the class with the specified .
The to use.
0
Method
1.0.5000.0
2.0.0.0
4.0.0.0
System.Void
is "xml" or "xmlns".
is , or is .
The namespace to add.
does not check and for conformance.
checks names, including prefixes and namespaces, to ensure they are valid XML names according to the World Wide Web Consortium (W3C) Namespaces specification. is used internally by , so to avoid a duplication of efforts, assumes all prefixes and namespaces are valid.
If the prefix and namespace already exist within the current scope, the new prefix and namespace pair will replace the existing prefix/namespace combination. The same prefix and namespace combination can exist across different scopes.
The following prefix/namespace pairs are added by default to the . They can be determined at any scope.
-
Prefix
Namespace
-
xmlns
http://www.w3.org/2000/xmlns/ (the xmlns prefix namespace)
-
xml
http://www.w3.org/XML/1998/namespace (the XML namespace)
-
String.Empty
String.Empty (the empty namespace). This value can be reassigned a different prefix. For example, xmlns="" defines the default namespace to be the empty namespace
Adds the given namespace to the collection.
The prefix to associate with the namespace being added. Use String.Empty to add a default namespace.
The namespace to add.
0
Property
1.0.5000.0
2.0.0.0
4.0.0.0
System.String
A containing the
namespace URI for the default namespace, or
if there is no default namespace.
This method is equivalent to calling LookupNamespace(String.Empty).
Gets the namespace URI for the default namespace.
0
Method
1.0.5000.0
2.0.0.0
4.0.0.0
System.Collections.IEnumerator
The following code shows how to use the to view all the namespace pairs stored in the object.
Dim nsEnum As IEnumerator = nsmgr.GetEnumerator()
Do While nsEnum.MoveNext
If nsEnum.Current <> "" Then
MsgBox("xmlns:" + nsEnum.Current + "=" + nsmgr.LookupNamespace(nsEnum.Current))
End If
Loop
Returns an enumerator to use to iterate through the namespaces in the .
An containing the prefixes stored by the .
0
Method
2.0.0.0
4.0.0.0
System.Collections.Generic.IDictionary<System.String,System.String>
The dictionary consists of a collection of namespace names keyed by prefix. It can be used to enumerate the in-scope namespaces. The dictionary is a disconnected copy of the namespace list. It remains unchanged as the current in-scope namespace list changes.
The following table shows how values affect the namespaces returned by the method.
-
XmlNamespaceScope value
xmlns:xml
xmlns:xmlns
xmlns=""
-
All
Yes
No
No
-
ExcludeXml
No
No
No
-
Local
No
No
Yes
Gets a collection of namespace names keyed by prefix which can be used to enumerate the namespaces currently in scope.
A collection of namespace and prefix pairs currently in scope.
An enumeration value that specifies the type of namespace nodes to return.
Method
1.0.5000.0
2.0.0.0
4.0.0.0
System.Boolean
To determine whether there is a default empty namespace defined, set to String.Empty. A return value of true indicates that there is a default namespace defined in the current scope; false indicates that no default namespace is defined.
xmlns:x= "" is illegal according to the W3C Namespaces recommendation.
Gets a value indicating whether the supplied prefix has a namespace defined for the current pushed scope.
true if there is a namespace defined; otherwise, false.
The prefix of the namespace you want to find.
0
Method
1.0.5000.0
2.0.0.0
4.0.0.0
System.String
As described above.
Override this
method to customize the behavior of this method in types derived from
the
class.
Gets the namespace URI for the specified prefix.
Returns the namespace URI for or null if there is no mapped namespace. The returned string is atomized.
For more information on atomized strings, see the class.
The prefix whose namespace URI you want to resolve. To match the default namespace, pass String.Empty.
0
Method
1.0.5000.0
2.0.0.0
4.0.0.0
System.String
This method finds the mapped prefix by walking the stack (that is, it looks globally). The supplied string must be atomized for the lookup to succeed. In other words, the supplied string object must exist in the namespace manager's name table ().
The returned string is also atomized. For more information on atomized strings, see the class.
Finds the prefix declared for the given namespace URI.
The matching prefix. If there is no mapped prefix, the method returns String.Empty. If a null value is supplied, then null is returned.
The namespace to resolve for the prefix.
0
Property
1.0.5000.0
2.0.0.0
4.0.0.0
System.Xml.XmlNameTable
The used by the current instance.
The name table is used to look up prefixes and namespace URIs.
Gets the associated with this object.
0
Method
1.0.5000.0
2.0.0.0
4.0.0.0
System.Boolean
When you call this method, all namespaces which were added to (by calling ) since the last call to are removed.
Pops a namespace scope off the stack.
true if there are namespace scopes left on the stack; false if there are no more namespaces to pop.
0
Method
1.0.5000.0
2.0.0.0
4.0.0.0
System.Void
After a call to this method, all namespaces, which are added to (by calling ), belong to the pushed namespace scope.
Pushes a namespace scope onto the stack.
0
Method
1.0.5000.0
2.0.0.0
4.0.0.0
System.Void
As described above.
The namespace
removed is from the current namespace scope. Namespaces outside the current
scope are ignored. If or does not exist
in the collection, this method simply returns.
Override this
method to customize the behavior of this method in types derived from
the
class.
is , or is .
The namespace to remove for the given prefix. The namespace removed is from the current namespace scope. Namespaces outside the current scope are ignored.
Removes the given namespace for the given prefix.
The prefix for the namespace
The namespace to remove for the given prefix. The namespace removed is from the current namespace scope. Namespaces outside the current scope are ignored.
0
Method
System.Collections.IDictionary
To be added.
To be added.
To be added.
To be added.
1.0.5000.0
0