2015-05-20 8 views
3

я следующий класс будет сериализацией:Сериализации целого типа без кавычек

[Serializable] 
public class LabelRectangle { 
    [XmlAttribute] 
    public int X { get; set; } 
    [XmlAttribute] 
    public int Y { get; set; } 
    [XmlAttribute] 
    public int Width { get; set; } 
    [XmlAttribute] 
    public int Height { get; set; } 
} 

и это будет сериализованными и выглядит следующим образом

<LabelRectangle X="15" Y="70" Width="10" Height="1" /> 

, но я хотел бы получить следующее результат:

<LabelRectangle X=15 Y=70 Width=10 Height=1 /> 

, который сериализует значения типа типа без кавычек. Возможно ли, и как, если да?

+1

Я не думаю, что то, что вы хотите достичь, является допустимым XM, поэтому вам придется писать собственный сериализатор на основе XML. –

+5

Зачем вам это нужно? Тогда это недействительный XML, что означает, что он не может быть прочитан другими программами без дополнительных усилий на их стороне. – Glorfindel

+0

btw; 'XmlSerializer' не заботится о' [Serializable] ' –

ответ

6

это будет не быть хорошо сформированный XML больше - вы определили атрибуте

[XmlAttribute] 

Значения атрибутов всегда в кавычках !!

3

Вы не должны этого делать. Значения атрибутов всегда должны быть указаны. Можно использовать одиночные или двойные кавычки. Так что это правильно:

<LabelRectangle X="15" Y="70" Width="10" Height="1" /> 

Это не так:

<LabelRectangle X=15 Y=70 Width=10 Height=1 /> 

См here.

Почему вы хотите отклоняться от правил? Никогда не было хорошей идеи.

0

Вы хотите сделать его элементом, поскольку атрибуты всегда находятся в кавычках.

[XmlElement(DataType = "int", 
ElementName = "Height")] 
public int Height { get; set; } 
2

Атрибуты XML не знают типы, и их значения всегда вводятся в число. Так что это специально.

Смотрите также XML specification:

AttValue ::= '"' ([^<&"] | Reference)* '"' 
       | "'" ([^<&'] | Reference)* "'" 

Таким образом, все значения атрибутов либо enquoted двойные кавычки " или одиночные кавычки '.

Смежные вопросы