LINQ to XML - Unterschiedliche Namespaces trotz gleicher Instanz

31/07/2008 - 14:18 von Marco v. Frieling | Report spam
Hallo.

Ich habe ein verschachteltes Objekt, welches ich per LINQ to XML in
XML serialisieren will (ich habe Gründe nicht den
System.Xml.Serialization Namespace zu verwenden), es tritt jetzt aber
folgendes Problem auf - Beispiel-Code:

public class ParentType
{
public static readonly XNamespace XMLNS = "urn:was-auch-immer/
v1.0/";
public static readonly XName ParentTypeElement = XMLNS +
"ParentType";

public XElement Render()
{
var children = new List<ChildType> { new ChildType("Hallo"), new
ChildType("Welt")};
var element = new XElement(ParentTypeElement,
from x in children
select x.Render());
return element;
}
}

public class ChildType
{
public static readonly XName ChildTypeElement = ParentType.XMLNS +
"ChildType";

public string Content {get;set;}
public ChildType(string content)
{
Content = content;
}

public XElement Render()
{
var element = new XElement(ChildTypeElement, Content);
return element;
}
}

Es sollte dann etwa folgendes XML rauskommen:

<ParentType xmls="urn:was-auch-immer/v1.0/">
<ChildType>Hallo</ChildType>
<ChildType>Welt</ChildType>
</ParentType>

Tatsàchlich kommt aber folgendes raus:

<ParentType xmls="urn:was-auch-immer/v1.0/">
<p2:ChildType xmls:p2="urn:was-auch-immer/v1.0/">Hallo</
p2:ChildType>
<p2:ChildType xmls:p2="urn:was-auch-immer/v1.0/">Welt</p2:ChildType>
</ParentType>

Hat da jemand eine Idee warum das rauskommt bzw. was ich falsch mache?

Danke und lg,
Marco
 

Lesen sie die antworten

#1 Martin Honnen
31/07/2008 - 15:10 | Warnen spam
Marco v. Frieling wrote:

Hat da jemand eine Idee warum das rauskommt bzw. was ich falsch mache?



Ich kann das nicht reproduzieren; Ausgabe von

class Program
{
static void Main(string[] args)
{
ParentType pt = new ParentType();
XElement serialization = pt.Render();
Console.WriteLine(serialization);
}
}

public class ParentType
{
public static readonly XNamespace XMLNS = "urn:was-auch-immer/v1.0/";
public static readonly XName ParentTypeElement = XMLNS +
"ParentType";

public XElement Render()
{
var children = new List<ChildType> { new ChildType("Hallo"), new
ChildType("Welt")};
var element = new XElement(ParentTypeElement,
from x in children
select x.Render());
return element;
}
}

public class ChildType
{
public static readonly XName ChildTypeElement = ParentType.XMLNS +
"ChildType";

public string Content {get;set;}
public ChildType(string content)
{
Content = content;
}

public XElement Render()
{
var element = new XElement(ChildTypeElement, Content);
return element;
}
}

ist

<ParentType xmlns="urn:was-auch-immer/v1.0/">
<ChildType>Hallo</ChildType>
<ChildType>Welt</ChildType>
</ParentType>

Dein gepostetes Beispiel funktioniert also wie gewünscht.



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

Ähnliche fragen