c# - 将 .net 对象反序列化为具有多个命名空间的 XML

标签 c# .net xml

我有一个用于反序列化 .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">

我类(class)的 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?

最佳答案

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

关于c# - 将 .net 对象反序列化为具有多个命名空间的 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8662914/

相关文章:

c# - 在 LINQ 语句中的调用中使用 out 变量是否安全?

c# - EPPlus:将样式复制到一个范围

c# - 在 Metro 应用程序中打印

c# - 将项目添加到 ImmutableDictionary<TKey, TValue> 内的 ImmutableList<T>

java - 通过 Java 数据库到 XML(反之亦然)

c# - 如果我使用 MemoryStream 存储 0.5 GB 的数据 block 然后丢弃它,它会产生什么长期影响?

c# - BigQuery : How to enable standard SQL in C#

c# - 如何将 Expires Header 添加到 iis7 中的自定义文件?

xml - 接口(interface)和编码/xml Unmarshal

c# - 使用 LINQ 解析 XML 数据