XmlAttributeOverrides를 사용하여 클래스를 serialize 한 후 xml에 표시 할 클래스 속성을 제어하려고합니다. "루트"클래스에는 있지만 중첩 된 속성에는없는 속성에서 작동합니다. 다음은 내가 성취하려는 것을 보여주기위한 간단한 예입니다. 난 할 수 있어요하는 이름이나 주소 중 하나를 유지중첩 된 속성에 XmlAttributeOverrides 사용
<Main>
<Name></Name>
<Address>
<StreetAddress></StreetAddress>
<ContactInfo>
<PhoneNumber></PhoneNumber>
<EmailAddr></EmailAddr>
</ContactInfo>
</Address>
</Main>
이다 : 나는 홈페이지()를 직렬화 할 때
public class Main
{
public string Name { get; set; }
public Location Address { get; set; }
}
public class Location
{
public string StreetAddress { get; set; }
public Contact ContactInfo{ get; set; }
}
public class Contact
{
public string PhoneNumber { get; set; }
public string EmailAddr { get; set; }
}
, 나는 이런 식으로 뭔가를 얻을 다음과 같이
내 클래스 계층 구조입니다
XmlAttributeOverrides overrides = new XmlAttributeOverrides();
XmlAttributes attribs = new XmlAttributes();
attribs.XmlIgnore = true;
attribs.XmlElements.Add(new XmlElementAttribute("Address"));
overrides.Add(typeof(Main), "Address", attribs);
xs = new XmlSerializer(typeof(Main), overrides);
내가해야 할 일은 Main.Address.ContactInf를 유지하는 것입니다. o가 직렬화되지 않음 가끔 (비어있는 경우). 나는 다음과 같은 시도하지만 작동하지 않았다 :
XmlAttributeOverrides overrides = new XmlAttributeOverrides();
XmlAttributes attribs = new XmlAttributes();
attribs.XmlIgnore = true;
attribs.XmlElements.Add(new XmlElementAttribute("ContactInfo "));
overrides.Add(typeof(Contact), "ContactInfo ", attribs);
xs = new XmlSerializer(typeof(Contact), overrides);
와 ...
XmlAttributeOverrides overrides = new XmlAttributeOverrides();
XmlAttributes attribs = new XmlAttributes();
attribs.XmlIgnore = true;
attribs.XmlElements.Add(new XmlElementAttribute("ContactInfo "));
overrides.Add(typeof(Main.Address.ContactInfo), "ContactInfo ", attribs);
xs = new XmlSerializer(typeof(Main.Address.ContactInfo), overrides);
을 실제로 대상으로 속성 이름을 지정하는 XPath에 문을 사용하여 포함, 더 많은 시도했지만 실패한 시도로이 페이지를 채우고 싶지 않았습니다. 나는이 방법으로도 가능한 것을 요구하고 있는가?
완벽합니다. 이 답변에 대한 귀하의 노력에 감사드립니다! – user1437872
@ user1437872 :이 답변이 도움이 되었기 때문에 기쁩니다. 이것이 당신의 질문을 해결했다면이 대답을 답으로 표시해 주시겠습니까? 이 질문을 대답으로 표시하면 사이트에서의 평판이 높아집니다. 이것은 다른 사람들이 사이트에 얼마나 좋은 (또는 아님) 정보가 있는지 알 수있게 도와줍니다. 긍정적 인 코멘트에 다시 한번 감사드립니다 !! – fourpastmidnight
답변 해 주셔서 감사합니다! – fourpastmidnight