Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.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# 在C中写入XML时停止CDATA标记的输出转义#_C#_Xml_Cdata - Fatal编程技术网

C# 在C中写入XML时停止CDATA标记的输出转义#

C# 在C中写入XML时停止CDATA标记的输出转义#,c#,xml,cdata,C#,Xml,Cdata,我们正在创建一个系统,将一些数据输出到XML模式。此模式中的某些字段需要保留其格式,因为最终系统会将其解析为Word文档布局。为此,我们在App.Config文件中使用了标记,然后将其放入从模式生成的xsd.exe类中相应的属性字段中。理想情况下,格式不会出问题,但不幸的是,系统就是这样运行的 App.Config部分如下所示: <header> <![CDATA[Some sample formatted data]]> </header> HeaderS

我们正在创建一个系统,将一些数据输出到XML模式。此模式中的某些字段需要保留其格式,因为最终系统会将其解析为Word文档布局。为此,我们在App.Config文件中使用了
标记,然后将其放入从模式生成的xsd.exe类中相应的属性字段中。理想情况下,格式不会出问题,但不幸的是,系统就是这样运行的

App.Config部分如下所示:

<header>
<![CDATA[Some sample formatted data]]>
</header>
HeaderSection header = ConfigurationManager.GetSection("header") as HeaderSection;
report.header = "<[CDATA[" + header.Header + "]]>";
xs = new XmlSerializer(typeof(report));
fs = new FileStream (reportLocation, FileMode.Create);
xs.Serialize(fs, report);
fs.Flush();
fs.Close();
理论上,这将在最终的Xml中生成一个部分,其中包含带有CDATA标记的信息。但是,角括号正在转换为


我已经研究了禁用Outout转义的方法,但到目前为止只能找到对XSLT表的引用。我也试过
@“你试过换衣服吗

report.header = "<[CDATA[" + header.Header + "]]>";
report.header=”“;

report.header=”“;

您将标记与内容混淆了

当您将字符串
分配给该值时,您的意思是,这就是您希望放在其中的内容。
XmlSerializer
不会也确实不应该尝试从该内容推断任何标记语义,而只是根据正常规则将其转义


如果您想在其中添加CDATA标记,则需要明确指示序列化程序执行此操作。有关如何执行此操作的示例有。

获取代码格式(这使得
这似乎是最有可能的解决方案。奇怪的是,我无法从App.Config获取CDATA并直接将其传输过来。尽管如此,我可以看到标记/内容问题的来源。Xsd类是自动生成的,因此将节点分配为[XmlIgnore]比正常情况下要复杂一些(你提供的链接中推荐的方法),但希望它能正常工作。谢谢你的建议!
report.header = "<![CDATA[" + header.Header + "]]>";