08. september 2011 - 11:24
Der er
2 kommentarer og 1 løsning
Læse html defination fra xml og generere servercontroller
Hej Har følgende xml: <root> <div class="Class1" id="1"> <![CDATA[<NogetData>]]> </div> <div class="Class2" id="2"> <div class="Class22" id="3"> <input class="Class222" id="4" type="text" maxlength="1" /> </div> <div class="Class22" id="5"> <div class="Class222" id="6"> <input class="Class2222" id="7" type="text" /> </div> <div class="Class222" id="8"> <input class="Class2222" id="9" type="text" /> </div> </div> </div> </root> Jeg vil gerne lave alle inputfelterne om til Servercontroller. (evt. også div) Jeg har prøvet at lave function der løber alle noderne igennem - men når jeg add´er noderne/controllerne til min ControlHolder f..... det op. Jeg har kigget en del på nettet men kan ikke finde noget. - Kun ved hjælp af xsl, men jeg ønsker at kunne lave det rent C#. Og det må gerne være dynamisk da html´en kan ændre sig! /Compilos
Annonceindlæg fra Trustworks
Tillid i en Zero-Trust verden
Med voksende trusler, nye EU-krav og øget kompleksitet er cybersikkerhed nu en central ledelsesopgave på linje med strategi og økonomi.
08. september 2011 - 11:53
#2
Problemet er, at når jeg adder controllerne bliver de ikke added rigtigt i hierkiet private void BuildWebControls(XmlNode xml) { for (int i = 0; i <= xml.ChildNodes.Count - 1; i++) { XmlNode n = xml.ChildNodes[i]; if (n.NodeType == XmlNodeType.Text) { Literal l = new Literal(); l.Text = n.Value; l.ID = Guid.NewGuid().ToString(); (dynDiv.Controls[dynDiv.Controls.Count - 1]).Controls.Add(l); } if (n.NodeType == XmlNodeType.Element && n.Name.ToLower() == "sup") { Literal l = new Literal(); l.Text = n.OuterXml; l.ID = Guid.NewGuid().ToString(); (dynDiv.Controls[dynDiv.Controls.Count - 1]).Controls.Add(l); } if (n.NodeType == XmlNodeType.Element && n.Name.ToLower() == "span") { Literal l = new Literal(); l.Text = n.OuterXml; l.ID = Guid.NewGuid().ToString(); (dynDiv.Controls[dynDiv.Controls.Count - 1]).Controls.Add(l); } if (n.NodeType == XmlNodeType.Element && n.Name.ToLower() == "br") { Literal l = new Literal(); l.Text = n.OuterXml; l.ID = Guid.NewGuid().ToString(); (dynDiv.Controls[dynDiv.Controls.Count - 1]).Controls.Add(l); } if (n.Name.ToLower() == "input") { TextBox box = new TextBox(); box.ID = dynDiv.ID + n.Attributes["id"].Value; box.Attributes.Add("onKeyPress", "return disableEnterKey(event)"); foreach (XmlAttribute a in n.Attributes) { if (a.Name.ToString() != "id" && a.Name.ToString() != "name") { box.Attributes.Add(a.Name, a.Value); } } dynDiv.Controls[dynDiv.Controls.Count - 1].Controls.Add(box); } if (n.NodeType == XmlNodeType.CDATA) { Literal l = new Literal(); l.Text = n.Value; l.ID = Guid.NewGuid().ToString(); (dynDiv.Controls[dynDiv.Controls.Count - 1]).Controls.Add(l); } if (n.Name.ToLower() == "div") { HtmlGenericControl h = new HtmlGenericControl("div"); foreach (XmlAttribute a in n.Attributes) { if (a.Name == "class") { h.Attributes.Add("class", a.Value); } } if (dynDiv.HasControls() ) { (dynDiv.Controls[dynDiv.Controls.Count - 1]).Controls.Add(h); } else { dynDiv.Controls.Add(h); } BuildWebControls(n); } } }