중첩 된 객체의 속성에 네임 스페이스를 추가하도록 XMLSerializer를 얻으려면 어떻게해야합니까?
이것은 내가 얻은 것입니다 :<ex:test soap:mustUnderstand="1" xmlns:ex="http://www.example.com/namespace">
<ex:A Type="lorem">ipsum</ex:A>
</ex:test>
이것은 내가 원하는 것입니다 : (타입 속성은 ex와 접두사가 붙습니다.)
<ex:test soap:mustUnderstand="1" xmlns:ex="http://www.example.com/namespace">
<ex:A ex:Type="lorem">ipsum</ex:A>
</ex:test>
이것은 내 코드입니다 :
[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; }
}
}
의 어느 - xsd.exe complex.xml xsd.exe gen1.xsd gen2.xsd/
(> [] [] []를 대체하는 것을 제외하고) XSD 파일을 생성 할 필요없이 터치 C 당신의 예제는 유효한 XML이고, 네임 스페이스 선언은 없다. –
원하는 것은 잘못되었습니다. 중복을 요구하는이 시스템의 다른면을 작성한 사람의 머리에 벽돌을 가져갈 것을 제안합니다. – Will
@Paul : 죄송합니다. 원래 이름을 공개하고 바꿔 놓기를 원하지 않았습니다. 잘못되었습니다. – svinto