0
여기 내 수업이 있습니다. 내가 널 int 값으로 직렬화 할 때XML 직렬화 - null 값 요소 제거
public class Class1
{
private int? intValue;
public int? IntValue
{
get { return intValue; }
set { intValue = value; }
}
bool ShouldSerializeIntValue()
{
return IntValue != null;
}
private string stringValue;
public string StringValue
{
get { return stringValue; }
set { stringValue = value; }
}
bool ShouldSerializeStringValue()
{
return StringValue != null;
}
private decimal? decimalValue;
public decimal? DecimalValue
{
get { return decimalValue; }
set { decimalValue = value; }
}
bool ShouldSerializeDecimalValue()
{
return DecimalValue != null;
}
}
}
여기, 내 XML 직렬화 코드
private string ToXml(object model)
{
if (model != null)
{
XmlSerializer Serializer = new XmlSerializer(model.GetType());
XmlSerializerNamespaces NameSpaces = new XmlSerializerNamespaces();
NameSpaces.Add("", "");
StringWriter Writer = new StringWriter();
XmlWriterSettings Settings = new XmlWriterSettings();
using (XmlWriter XmlWriter = XmlWriter.Create(Writer))
{
Serializer.Serialize(XmlWriter, model, NameSpaces);
}
return Writer.ToString();
}
else return null;
}
입니다 그것은 다음과 같이 직렬화된다. 그래서 그 대신 내가이 null 인 경우 직렬화하는 동안 전체 요소를 제거하려면이
<IntValue p2:nil="true" xmlns:p2="http://www.w3.org/2001/XMLSchema-instance" />
같은 직렬화의
<?xml version="1.0" encoding="utf-16"?><Class1><IntValue p2:nil="true" xmlns:p2="http://www.w3.org/2001/XMLSchema-instance" /><StringValue>Int value is null.</StringValue><DecimalValue>456.789</DecimalValue></Class1>
.
비슷한 질문이 있지만 위의 그림과 같이 항상 직렬화되어 있고 "ShouldSerialize"기능을 가지고 있기 때문에이 특정 클래스에서 잘못된 것이 무엇인지 확신 할 수 없습니다.
어떻게해야합니까? 이견있는 사람 ?
바보 나 : 좋은 캐치로 ShouldSerialize {PROPERTYNAME} 방법을 표시해야합니다. 고맙습니다. – Adam