Wie bekomme ich den XMLSerializer hinzufügen Namensräume für Attribute in verschachtelten Objekten?
Dies ist, was ich bekomme:
<ex:test soap:mustUnderstand="1" xmlns:ex="http://www.example.com/namespace">
<ex:A Type="lorem">ipsum</ex:A>
</ex:test>
Dies ist, was ich will: (Beachten Sie, dass das Type-Attribut mit dem Präfix ex.)
<ex:test soap:mustUnderstand="1" xmlns:ex="http://www.example.com/namespace">
<ex:A ex:Type="lorem">ipsum</ex:A>
</ex:test>
Dies ist mein code:
[XmlType(Namespace = "http://www.example.com/namespace")]
[XmlRoot("ex", Namespace = "http://www.example.com/namespace")]
public class TestSoapHeader : SoapHeader {
private TestSoapHeaderTypeValuePair _a;
public TestHeader() {
MustUnderstand = true;
}
[XmlNamespaceDeclarations]
public XmlSerializerNamespaces xmlsn {
get {
XmlSerializerNamespaces xsn = new XmlSerializerNamespaces();
xsn.Add("ex", "http://www.example.com/namespace");
return xsn;
}
set { }
}
public TestSoapHeaderTypeValuePair A {
get { return _a; }
set { _a = value; }
}
}
[XmlType(Namespace = "http://www.example.com/namespace")]
public class TestSoapHeaderTypeValuePair {
private string _type;
private string _value;
[XmlNamespaceDeclarations]
public XmlSerializerNamespaces xmlsn
{
get
{
XmlSerializerNamespaces xsn = new XmlSerializerNamespaces();
xsn.Add("ex", "http://www.example.com/namespace");
return xsn;
}
set { }
}
public TestSoapHeaderTypeValuePair(string type, string value) {
Type = type;
Value = value;
}
public TestSoapHeaderTypeValuePair() {}
[System.Xml.Serialization.XmlAttributeAttribute("type", Namespace = "http://www.example.com/namespace")]
public string Type {
get { return _type; }
set { _type = value; }
}
[System.Xml.Serialization.XmlText()]
public string Value {
get { return _value; }
set { _value = value; }
}
}
Weder Ihre Beispiele sind gültige XML, es gibt keine ex-namespace-Deklaration.
Was Sie wollen, ist falsch. Ich würde vorschlagen, unter einem Ziegelstein auf den Kopf von wer schrieb die andere Seite dieses Systems erfordert, dass die Redundanz.
Sorry, ich wollte nicht aussetzen, die original-Dateinamen und ersetzt die Dinge und bekam es falsch.
Ja, ich weiß, aber es ist eine jener Zeiten, wenn Sie nicht ändern Sie die Dinge am anderen Ende. 🙁
Was Sie wollen, ist falsch. Ich würde vorschlagen, unter einem Ziegelstein auf den Kopf von wer schrieb die andere Seite dieses Systems erfordert, dass die Redundanz.
Sorry, ich wollte nicht aussetzen, die original-Dateinamen und ersetzt die Dinge und bekam es falsch.
Ja, ich weiß, aber es ist eine jener Zeiten, wenn Sie nicht ändern Sie die Dinge am anderen Ende. 🙁
InformationsquelleAutor svinto | 2009-12-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
IXmlSerializable
vielleicht?Hinweis habe ich auch noch (zu
A
):hier der code:
InformationsquelleAutor Marc Gravell
z.B. xsd.exe complex.xml
xsd.exe gen1.xsd gen2.xsd /c
keine Notwendigkeit zu berühren xsd-Dateien erzeugt (außer zum ersetzen [][] -> [])
InformationsquelleAutor neuralsea