C# XmlSerialize类到CDATA
由于我们编写的接口之一,我们必须为类列表添加CDATA标记C# XmlSerialize类到CDATA,c#,asp.net-core,xmlserializer,C#,Asp.net Core,Xmlserializer,由于我们编写的接口之一,我们必须为类列表添加CDATA标记 ]]> 我不确定如何实现这一点。我发现了一些关于单个字符串的问题,但在整个课堂上并没有发现太多。 任何建议都会很有帮助。获得预期输出的方法之一是将模块的创建数据和生成CDATA部分分开。例如: 创建模块数据- <modules> <![CDATA[<module> <code>test</code> <level>tests1</level>
]]>
我不确定如何实现这一点。我发现了一些关于单个字符串的问题,但在整个课堂上并没有发现太多。
任何建议都会很有帮助。获得预期输出的方法之一是将模块的创建
数据和生成CDATA
部分分开。例如:
创建模块
数据-
<modules>
<![CDATA[<module>
<code>test</code>
<level>tests1</level>
<summary>Test3</summary>
<title>Test</title>
</module><module>
<code>test3</code>
<level>tests3</level>
<summary>Test3</summary>
<title>Test3</title>
</module>]]>
</modules>
public class Module
{
public string title { get; set; }
public string code { get; set; }
public string level { get; set; }
public string summary { get; set; }
}
public static string CreateXMLString()
{
List<Module> modules = new List<Module>();
modules = new List<Module>() { new Module() { code = "test",
summary="Test3", title="Test", level = "tests1" },
new Module() { code = "test3",
summary="Test3", title="Test3", level = "tests3" } };
// Create XML to return the string in the format of
// <module code="test">
// < level > tests1 </ level >
// < summary > Test3 </ summary >
// < title > Test </ title >
//</ module >< module code = "test3" >
// < level > tests3 </ level >
// < summary > Test3 </ summary >
// < title > Test3 </ title >
// </ module >
var modulesXml =
from mod in modules
select new XElement("module",
new XAttribute("code", mod.code),
new XElement("level", mod.level),
new XElement("summary", mod.summary),
new XElement("title", mod.title)
);
return String.Concat(modulesXml);
}
static void Main(string[] args)
{
Modules mc = new Modules();
mc.Message = CreateXMLString();//Assign your data created in step 2
XmlSerializer serializer = new XmlSerializer(typeof(Modules));
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("", "");
StringWriter writer = new StringWriter();
//Remove unnecessary namespaces
serializer.Serialize(writer, mc,ns);
var test = XDocument.Parse(writer.ToString());
var data = test.Root.Elements();
Console.WriteLine(data.FirstOrDefault().Value);
}
输出-
<modules>
<![CDATA[<module>
<code>test</code>
<level>tests1</level>
<summary>Test3</summary>
<title>Test</title>
</module><module>
<code>test3</code>
<level>tests3</level>
<summary>Test3</summary>
<title>Test3</title>
</module>]]>
</modules>
它是否可以在两步过程中工作,将“模块”列表序列化为XML,然后将结果作为字符串添加到
节点?回答了您的问题吗?答案显示了如何使用嵌套序列化在CDATA节中嵌入序列化的XML。