Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Problem sa xml namespace-om

[es] :: .NET :: Problem sa xml namespace-om

[ Pregleda: 2813 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

DarkMan
Darko Matesic

Član broj: 20445
Poruke: 572
79.101.194.*

Jabber: DarkMan


Profil

icon Problem sa xml namespace-om14.02.2008. u 00:12 - pre 197 meseci
Sledeci kod:
Code:

            XmlDocument doc = new XmlDocument();
            doc.LoadXml("<Project DefaultTargets='Build' xmlns='http://schemas.microsoft.com/developer/msbuild/2003\'></Project>".Replace("'", "\x22"));
            XmlNode node = doc.CreateElement("Proba");
            
            doc.DocumentElement.AppendChild(node);
            Console.WriteLine("Attributes: " + node.Attributes.Count);
            Console.WriteLine("node.OuterXml: " + node.OuterXml);
            Console.WriteLine(doc.OuterXml);


daje sledeci rezultat:
Code:

Attributes: 0
node.OuterXml: <Proba />
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Proba xmlns="" /></Project>


Moj problem je sto mi je u node Proba dodao atribut xmlns="".
node.Attributes.Count kaze da nema atributa a i node.OuterXml ne daje taj xmlns pa pretpostavlja da je nesto do generisanja dokumenta ali ne znam gde.
Znam da se ovo moze ukoniti kada bi uklonio i xmlns iz root-a ali mi on treba.

 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Problem sa xml namespace-om14.02.2008. u 11:03 - pre 197 meseci
Moras da navedes default namespace URI za svaki tag koji kreiras a koji ce biti dete tvog root-a. CreateElement ima overload koji prima xmlns namespace elementa i mozes da mu das onaj koji je u root-u:

Code:

            XmlDocument doc = new XmlDocument();
            doc.LoadXml("<Project DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\"></Project>");
            XmlNode node = doc.CreateElement("Proba", doc.DocumentElement.NamespaceURI);

            doc.DocumentElement.AppendChild(node);
            Console.WriteLine("Attributes: " + node.Attributes.Count);
            Console.WriteLine("node.OuterXml: " + node.OuterXml);
            Console.WriteLine(doc.OuterXml);


i sad dobijes:

Code:

Attributes: 0
node.OuterXml: <Proba xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"><Proba /></Project>


Attributes je nula zato sto se xmlns= i xmlns:xxx= ne tretira kao atribut od strane XML DOM-a. Ako budes kreirao atribute u tvojim nodovima, prica je drugacija, za razliku od tagova atribut nasledjuje namespace elementa u koji je umetnut. Cak ako navedes isti namespace u CreateAttribute, DOM ce napraviti neku ludoriju ovog tipa (sto je po meni propust u DOMu):

Code:

<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      <Proba d2p1:TestAttr="" xmlns:d2p1="http://schemas.microsoft.com/developer/msbuild/2003" />
</Project>

Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

DarkMan
Darko Matesic

Član broj: 20445
Poruke: 572
77.46.211.*

Jabber: DarkMan


Profil

icon Re: Problem sa xml namespace-om14.02.2008. u 13:29 - pre 197 meseci
To je to, hvala!
 
Odgovor na temu

[es] :: .NET :: Problem sa xml namespace-om

[ Pregleda: 2813 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.