Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 2 odgovora
  • 3.689 pregleda

Najnovija ↓

Problem sa xml namespace-om 14.02.2008. u 01:12 · pre 227 meseci #1
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.

Re: Problem sa xml namespace-om 14.02.2008. u 12:03 · pre 227 meseci #2
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>
Potpis
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ć
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme