怎么在Xml序列化时添加文件引用声明

.Net技术 码拜 10年前 (2015-03-29) 1204次浏览 0个评论

Xml序列化生成的代码是没有样式表引用的,我想添加一个样式引用,所以这样写:       
        

 using (StreamWriter streamWriter = new StreamWriter(fileName, false))
                {
                    using (XmlTextWriter writer = new XmlTextWriter(streamWriter))
                    {
                      //我用WriteProcessingInstruction添加引用声明但是这行只能插到文件开头,与我的要求不符
                        writer.WriteProcessingInstruction("xml-stylesheet", "type="text/xsl" href="form/record.xsl"");
                        serializer.Serialize(streamWriter, model, ns);
                    }
                }
                fs.Dispose();

但是:
我要的效果是这样的:

<?xml version=”1.0″ encoding=”utf-8″?>
<?xml-stylesheet type=”text/xsl” href=”form/index2.xsl”?>
实际效果是这样的:
<?xml-stylesheet type=”text/xsl” href=”form/index2.xsl”?><?xml version=”1.0″ encoding=”utf-8″?>

请问还有什么方法能实现这个问题呢?

怎么在Xml序列化时添加文件引用声明
10分
WriteProcessingInstruction这个方法有没有重载,选择追加位置?
怎么在Xml序列化时添加文件引用声明
30分
writer.WriteStartDocument(); //添加此行
writer.WriteProcessingInstruction(“xml-stylesheet”, “type=”text/xsl” href=”form/record.xsl””);
怎么在Xml序列化时添加文件引用声明
引用 2 楼 lincolnandlinda 的回复:

writer.WriteStartDocument(); //添加此行
writer.WriteProcessingInstruction(“xml-stylesheet”, “type=”text/xsl” href=”form/record.xsl””);

这样不行的,Serialize方法本来就自动添加了<?xml version=”1.0″ encoding=”utf-8″?>,如果再写WriteStartDocument就变成了这样:
<?xml version=”1.0″ encoding=”utf-8″?><?xml-stylesheet type=”text/xsl” href=”form/record.xsl”?><?xml version=”1.0″ encoding=”utf-8″?>

怎么在Xml序列化时添加文件引用声明
30分
换个思路,读出xml,在<?xml version=”1.0″ encoding=”utf-8″?>之后插入
<?xml-stylesheet type=”text/xsl” href=”form/index2.xsl”?>
怎么在Xml序列化时添加文件引用声明
30分
找一个折中的方法,在你所要序列化的类中添加一个字符串字段,
[XmlText]
public string styleShee=”<?xml-stylesheet type=”text/xsl” href=”form/record.xsl”?>”
如果还不行,那就自己控制序列化过程。
/div>
怎么在Xml序列化时添加文件引用声明
问题解决了 参照这里
http://www.cnblogs.com/fish-li/archive/2013/05/05/3061816.html

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明怎么在Xml序列化时添加文件引用声明
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!