【问题标题】:Customizing XmlSerialize output自定义 XmlSerialize 输出
【发布时间】:2014-01-29 23:20:24
【问题描述】:

我正在使用 xmlserialize 类创建一个 xml 文件,我得到的输出几乎就是我需要的。 这就是我得到的

<?xml version="1.0" encoding="UTF-8"?>
 <pdf file-name="C:\Users\d.sassoli\Desktop\media\mergiato.pdf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <document>
  <document start-page="1">
   <SheetChange>
     <SheetChange sheet-type="A4" page-number="1"/>
     <SheetChange sheet-type="A3" page-number="2"/>
    </SheetChange>
 </document>
</pdf>

这就是我想要的

 <?xml version="1.0" encoding="UTF-8"?>
 <root xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <pdf file-name="C:\Users\d.sassoli\Desktop\media\mergiato.pdf" >
  <document start-page="1">
     <SheetChange sheet-type="A4" page-number="1"/>
     <SheetChange sheet-type="A3" page-number="2"/>
</pdf>

这些是我定义xml结构的类

   [XmlRootAttribute("pdf", IsNullable = false)]
public class Pdf
{
    private Pdf() { }
    public static Pdf Builder()
    {
        Pdf pdf = new Pdf();
        return pdf;
    }
    [XmlAttribute("file-name")]
    public List<string> FileName { get; set; }
    public List<document> document;

}
public class document 
{

    private document() { }
    public static document Builder()
    {
        document doc = new document();
        return doc;
    }
    [XmlAttribute("last-page")] public string LastPage;
    [XmlAttribute("start-page")] public string StartPage;
    public List<SheetChange> SheetChange;

}
public class SheetChange
{
    private SheetChange() { }
    public static SheetChange Builder()
    {
        SheetChange sheetChange = new SheetChange();
        return sheetChange;
    }
    [XmlAttribute("page-number")]
    public string PageNumber { get; set; }
    [XmlAttribute("sheet-type")]
    public string SheetType { get; set; }
}

我尝试摆弄 xmlattribute 但没有达到我想要的效果。

【问题讨论】:

    标签: c# xmlserializer


    【解决方案1】:

    你需要为你的类实现IXMLSerializable 接口。然后重写 ReadXML 和 WriteXML 方法。

    http://msdn.microsoft.com/en-us/library/system.xml.serialization.ixmlserializable(v=vs.110).aspx

    您可以找到一些使用这些方法的示例。

    【讨论】:

      猜你喜欢
      • 2010-09-27
      • 2019-01-08
      • 2011-08-10
      • 2010-09-14
      • 2011-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多