Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# XmlSerialize类到CDATA_C#_Asp.net Core_Xmlserializer - Fatal编程技术网

C# XmlSerialize类到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标记


]]>
我不确定如何实现这一点。我发现了一些关于单个字符串的问题,但在整个课堂上并没有发现太多。 任何建议都会很有帮助。

获得预期输出的方法之一是将
模块的创建
数据和生成
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);
        }
    
  • 要测试输出,请在序列化过程中分配步骤2中生成的字符串,您可以参考下面的示例代码

    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。