同名的C#XML序列化XmlNodes
我目前正在开发一个C#工具,该工具必须序列化和反序列化包含具有相同名称但不同内容/属性的嵌套对象的对象。它基本上是一个具有n个级别的通用列表,其中具有相同名称的节点根据父节点具有不同的内容。现在我有一个问题,我不能用默认的XML序列化程序来实现,因为如果有同名的不同类,它不知道选择哪个类 Xml示例:同名的C#XML序列化XmlNodes,c#,xml,serialization,C#,Xml,Serialization,我目前正在开发一个C#工具,该工具必须序列化和反序列化包含具有相同名称但不同内容/属性的嵌套对象的对象。它基本上是一个具有n个级别的通用列表,其中具有相同名称的节点根据父节点具有不同的内容。现在我有一个问题,我不能用默认的XML序列化程序来实现,因为如果有同名的不同类,它不知道选择哪个类 Xml示例: <assembly> <content> <add x="1" y="2"></add> <xml path="
<assembly>
<content>
<add x="1" y="2"></add>
<xml path="C:/abc.xml">
<add z="1">
<dummyNode>Content to Insert</dummyNode>
</add>
</xml>
</content>
</assembly>
ContentClass.cs
public class Content
{
[System.Xml.Serialization.XmlElement]
public List<ContentEntry> Entries;
}
generic/xml.cs
public class xml : ContentEntry
{
[System.Xml.Serialization.XmlAttribute("path")]
public String Path;
}
xml/add.cs
public class add : ContentEntry
{
[System.Xml.Serialization.XmlAttribute("z")]
public String Z;
}
我能把这个存档吗?或者我必须在XmlSerializer中实现某种逻辑吗
致以最诚挚的问候,尝试使用此链接将XML转换为CS并序列化/反序列化对象您可以使用标准的序列化函数。只需更改两个add类的名称,使它们不同即可。然后使用[System.Xml.Serialization.XmlRoot(“添加”)]和[System.Xml.Serialization.xmlement(“添加”)],这样serialize函数现在就可以使用实际的标记名了。XmlRoot可以超越任何类,而不仅仅是xml中的根标记
public class add : ContentEntry
{
[System.Xml.Serialization.XmlAttribute("x")]
public String X;
[System.Xml.Serialization.XmlAttribute("y")]
public String Y;
}
public class xml : ContentEntry
{
[System.Xml.Serialization.XmlAttribute("path")]
public String Path;
}
public class add : ContentEntry
{
[System.Xml.Serialization.XmlAttribute("z")]
public String Z;
}