XML到自定义对象

时间:2015-07-13 11:30:51

标签: c# xml linq linq-to-xml

我有一个xml文件,我想使用Linq从该xml生成自定义列表。 这是我的代码。但我没有得到任何记录。这是我的代码。

public class TemplateSettings {
        public string DecimalSeparator { get; set; }
        public string ThousandSeparator { get; set; }
        public string DateSeparator { get; set; }
        public string TimeSeparator { get; set; }
    }

XML Here

<TemplateSetting>
  <DecimalSeparator>1</DecimalSeparator> 
  <ThousandSeparator>2</ThousandSeparator> 
  <DateSeparator>3</DateSeparator> 
  <TimeSeparator>4</TimeSeparator> 
  <DateFormat>dd/MM/yyyy</DateFormat> 
  <ValueDelimiter>tr</ValueDelimiter> 
  <QuoteCharacter>r</QuoteCharacter> 
  <IsHeader>False</IsHeader> 
  </TemplateSetting>

我从xml获取对象的代码是

 var a = (from x in objTemplateMasterEAL.TemplatSettingsXML.Elements("TemplateSetting")
  select new TemplateSettings()
   {
      DateFormat = (string)x.Element("DateFormat"),
      DecimalSeparator = (string)x.Element("DecimalSeparator"),
      ThousandSeparator = (string)x.Element("ThousandSeparator"),
      DateSeparator = (string)x.Element("DateSeparator"),
      TimeSeparator = (string)x.Element("TimeSeparator"),
      QuoteCharacter = (string)x.Element("QuoteCharacter"),
      ValueDelimiter = (string)x.Element("ValueDelimiter"),
      IsHeaderLine = (bool)x.Element("IsHeader")
  }).ToList<TemplateSettings>();

任何人都可以告诉我这里有什么问题吗?

2 个答案:

答案 0 :(得分:1)

如果你的目标只是将XML反序列化为对象,你可以简单地使用它:

<div class="form-inline">
    <input id="btnSave" name="onSave" type="submit" class="btn btn-primary" style="width:65px" value="Save" />
    <input id="btnPreview" name="onPreview" type="submit" class="btn btn-primary" style="width:65px" value="Preview" />
    <input type="hidden" id="what-was-clicked" />
        </div>

答案 1 :(得分:0)

我只做一次改动,对我来说工作正常。

<TemplateSettings>
<TemplateSetting>
  <DecimalSeparator>1</DecimalSeparator> 
  <ThousandSeparator>2</ThousandSeparator> 
  <DateSeparator>3</DateSeparator> 
  <TimeSeparator>4</TimeSeparator> 
  <DateFormat>dd/MM/yyyy</DateFormat> 
  <ValueDelimiter>tr</ValueDelimiter> 
  <QuoteCharacter>r</QuoteCharacter> 
  <IsHeader>False</IsHeader> 
  </TemplateSetting>
</TemplateSettings>