将.net对象反序列化为具有多个名称空间的XML

本文关键字:空间 XML 对象 net 反序列化 | 更新日期: 2023-09-27 18:19:09

我有一个用于反序列化。net对象的类。我想让根XML像这样输出:

<TrainingCenterDatabase
  xsi:schemaLocation="http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2 http://www.garmin.com/xmlschemas/TrainingCenterDatabasev2.xsd"
  xmlns:ns5="http://www.garmin.com/xmlschemas/ActivityGoals/v1"
  xmlns:ns3="http://www.garmin.com/xmlschemas/ActivityExtension/v2"
  xmlns:ns2="http://www.garmin.com/xmlschemas/UserProfile/v2"
  xmlns="http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns4="http://www.garmin.com/xmlschemas/ProfileExtension/v1">

我的类的XmlRoot看起来像这样:

[XmlRoot(ElementName="TrainingCenterDatabase",Namespace=Declarations.SchemaVersion,IsNullable=false),Serializable]
public class TrainingCenterDatabase : com.trainerroad.garmin.TrainingCenterDatabase_t
{
    public TrainingCenterDatabase() : base()
    {
    }
}
public struct Declarations
{
    public const string SchemaVersion = "http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2";
}

输出如下:

<TrainingCenterDatabase xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

我如何添加额外的名称空间到我的XmlRoot?

将.net对象反序列化为具有多个名称空间的XML

可能不是最好的解决方案,但如果真的需要节省空间或流量,可以使用自定义序列化方法