Namespace Prefix schreiben. Wie?

28/09/2007 - 14:35 von D.Follmann | Report spam
Hallo,
ich möchte folgenden XML-Text erzeugen:

<?xml version="1.0" ?>
<FDT xmlns="x-schema:DTMCommunicationErrorSchema.xml"
xmlns:fdt="x-schema:FDTDataTypesSchema.xml">
<fdt:CommunicationError communicationError="timeout" tag="myTag"/>
</FDT>

und habe dazu folgenden C#-Code:

XmlDocument xdoc = new XmlDocument();
xdoc.AppendChild(xdoc.CreateXmlDeclaration("1.0", null, null));
XmlElement elem1 = xdoc.CreateElement("FDT");
elem1.SetAttribute("xmlns", "x-schema:DTMCommunicationErrorSchema.xml");
elem1.SetAttribute("xmlns:fdt", "x-schema:FDTDataTypesSchema.xml");
XmlElement error = xdoc.CreateElement("fdt:CommunicationError");
error.SetAttribute("communicationError", "timeout");
error.SetAttribute("tag", "meinTag");
elem1.AppendChild(error);
xdoc.AppendChild(elem1);
xdoc.Save("c:\\abc.xml");

Nach ausführung des Codes steht in der xml-Datei allerdings das
Namespace-Prefix "fdt:" niht mit drin (vor CommunicationError).

Ich habe auch schon folgendes geàndert:

error = xdoc.CreateElement("fdt", "CommunicationError", null);

Aber dann sieht es immmer noch genauso aus.

In der Eigenschaft "Name" vom Element steht auch "fdt:CommunicationError"
aber zum Speichern nimmt er anscheinend den Localname und da fehlt das "fdt:"

Woran liegt das, und was muss ich àndern, damit das Pràfix übernommen wird??
 

Lesen sie die antworten

#1 Martin Honnen
28/09/2007 - 15:30 | Warnen spam
D.Follmann wrote:

ich möchte folgenden XML-Text erzeugen:

<?xml version="1.0" ?>
<FDT xmlns="x-schema:DTMCommunicationErrorSchema.xml"
xmlns:fdt="x-schema:FDTDataTypesSchema.xml">
<fdt:CommunicationError communicationError="timeout" tag="myTag"/>
</FDT>



Per XmlWriter:
const string dtm = "x-schema:DTMCommunicationErrorSchema.xml";
const string fdt = "x-schema:FDTDataTypesSchema.xml";
XmlWriterSettings writerSettings = new XmlWriterSettings();
writerSettings.Indent = true;
using (XmlWriter writer = XmlWriter.Create("file.xml",
writerSettings))
{
writer.WriteStartDocument();
writer.WriteStartElement("FDT", dtm);
writer.WriteAttributeString("xmlns", "fdt", null, fdt);
writer.WriteStartElement("fdt", "CommunicationError", fdt);
writer.WriteAttributeString("communicationError",
"timeout");
writer.WriteAttributeString("tag", "myTag");
writer.WriteEndDocument();
}



Martin Honnen MVP XML
http://JavaScript.FAQTs.com/

Ähnliche fragen