System.Xml.XmlNamespaceManager.AddNamespace C# (CSharp) Méthode

AddNamespace() public méthode

public AddNamespace ( string prefix, string uri ) : void
prefix string
uri string
Résultat void
        public virtual void AddNamespace( string prefix, string uri ) {
            if ( uri == null )
                throw new ArgumentNullException( "uri" );

            if ( prefix == null )
                throw new ArgumentNullException( "prefix" );

            prefix = nameTable.Add( prefix );
            uri = nameTable.Add( uri );
            
            if ( ( Ref.Equal( xml, prefix ) && !uri.Equals( XmlReservedNs.NsXml ) ) ) {
                throw new ArgumentException( Res.GetString( Res.Xml_XmlPrefix ) );
            }
            if ( Ref.Equal( xmlNs, prefix ) ) {
                throw new ArgumentException( Res.GetString( Res.Xml_XmlnsPrefix ) );
            }
            
            int declIndex = LookupNamespaceDecl( prefix );
            int previousDeclIndex = -1;
            if ( declIndex != -1 ) {
                if ( nsdecls[declIndex].scopeId == scopeId ) {
                    // redefine if in the same scope
                    nsdecls[declIndex].uri = uri;
                    return;
                }
                else {
                    // othewise link
                    previousDeclIndex = declIndex;
                }
            }

            // set new namespace declaration
            if ( lastDecl == nsdecls.Length - 1 ) {
                NamespaceDeclaration[] newNsdecls = new NamespaceDeclaration[nsdecls.Length * 2];
                Array.Copy( nsdecls, 0, newNsdecls, 0, nsdecls.Length );
                nsdecls = newNsdecls;
            }
            
            nsdecls[++lastDecl].Set( prefix, uri, scopeId, previousDeclIndex );

            // add to hashTable
            if ( useHashtable ) {
                hashTable[prefix] = lastDecl;
            }
            // or create a new hashTable if the threashold has been reached
            else if ( lastDecl >= MinDeclsCountForHashtable ) {
                // add all to hash table
                Debug.Assert( hashTable == null );
                hashTable = new Dictionary<string,int>( lastDecl );
                for ( int i = 0; i <= lastDecl; i++ ) {
                    hashTable[nsdecls[i].prefix] = i;
                }
                useHashtable = true;
            }
        }

Usage Example

        /// <summary>
        /// Metodo para carregar os dados.
        /// </summary>
        /// <returns></returns>
        public List<YoutubeFeedItem> Listar()
        {
            string url = String.Format("https://gdata.youtube.com/feeds/api/videos?author={0}&orderby=published&start-index=11&max-results={1}&v=2&fields=entry(title,published,link,media:group(media:thumbnail, media:description))", this.Username, this.Lines);
            XmlDocument xmlDoc = this.GetXmlDocument(url);

            /// Uma peculiaridade deste codico é que o retorno do XML traz a definição
            /// de uma namespace implicita, assim como outras. Ou seja, se não regitrarmos
            /// as namespaces e depois as referenciarmos, a engine não irá encontrar
            /// os lementos especificados nos xpath.
            XmlNamespaceManager nsManager = new XmlNamespaceManager(xmlDoc.NameTable);
            nsManager.AddNamespace("atom", "http://www.w3.org/2005/Atom");
            nsManager.AddNamespace("media", "http://search.yahoo.com/mrss/");
            nsManager.AddNamespace("yt", "http://gdata.youtube.com/schemas/2007");

            List<YoutubeFeedItem> resultados = new List<YoutubeFeedItem>();

            foreach (XmlNode node in xmlDoc.SelectNodes("//atom:entry", nsManager))
            {
                resultados.Add(new YoutubeFeedItem()
                {
                    Text = node.SelectSingleNode("atom:title", nsManager).InnerText,
                    Link = node.SelectSingleNode("atom:link[@type='text/html']", nsManager).Attributes["href"].Value,
                    Description = node.SelectSingleNode("media:group/media:description", nsManager).InnerText,
                    Thumbnail = node.SelectSingleNode("media:group/media:thumbnail", nsManager).Attributes["url"].Value,
                    Published = DateTime.Parse(node.SelectSingleNode("atom:published", nsManager).InnerText)
                });
            }

            return resultados;
        }
All Usage Examples Of System.Xml.XmlNamespaceManager::AddNamespace