Leeres Attributs xmlns="" in der Reportdatei ...

12/05/2008 - 18:39 von Frank Boehland | Report spam
Ein abendliches Hallo am Feiertag,

ich hatte meine Frage unter "Knoten einfügen" gestellt, jedoch dort keine
Antwort (mehr) erhalten. Deshalb das Thema noch einmal als eigene Frage.

Ich habe das Problem des leeren Attributs xmlns="" in der Reportdatei
(RDLC). Ich möchte unter Body/ReportItems ein neues Textbox-Element wàhrend
der Laufzeit anfügen. Geht auch alles gut, er schreibt aber eben o.g.
Attribut in den Tag - die Konsequenz ist, dass die Textbox nicht angezeigt
wird. Lösche ich das Attribut manuell im File und zeige dann den Report an
ist alles Ok.

Etwas Code (VB.NET):

Dim manager As XmlNamespaceManager = New
XmlNamespaceManager(rpdokument.NameTable)

manager.AddNamespace("xx",
"http://schemas.microsoft.com/sqlser...tion")

findNode = root.SelectSingleNode("//xx:Body/xx:ReportItems", manager)

elmXML = rpdokument.CreateNode(XmlNodeType.Element, "xx:Textbox", "")

Dim atb As XmlAttribute = rpdokument.CreateAttribute("xx:Name")
atb.Value = "Eintrag"
elmXML.Attributes.Append(atb)

elmXML.InnerXml = "xml ..."

findNode.AppendChild(elmXML)

Wàre über einen Hinweis sehr dankbar ...

(Sollte ich wirklich jede Zeile mit "<mm:MyElement name " schreiben müssen,
wie in einer Antwort beschrieben)

Frank
 

Lesen sie die antworten

#1 Frank Dzaebel
12/05/2008 - 21:54 | Warnen spam
Hallo Frank Boehland,

Ich habe das Problem des leeren Attributs xmlns="" in der Reportdatei
[...]



Der Trick ist hier, bei CreateElement noch zusàtzlich
die aktuelle "node.NamespaceURI" zuzufügen:

XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("rd",
"http://schemas.microsoft.com/sqlser...tion");
XmlNode node =
doc.SelectSingleNode("//rd:Textbox[@Name='textbox1']/rd:Value", nsmgr);
node.InnerText = "MeinTest";

XmlNode element = doc.CreateElement("NeuesElement", node.NamespaceURI);
element.InnerText = "Hallo :-)";
XmlNode n = node.AppendChild(element);


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen