繁体   English   中英

XMLSerializer-是否将类添加到命名空间?

[英]XMLSerializer - Class added to Namespace?

在过去的两天里,我一直在解决这个问题,但仍然无法解决问题,我正在寻求一些帮助。

我的Listbox会根据组合Combobox选择的项目将生成的项目添加到其中。 单击“ Create新窗口”按钮时,将出现一个WebBrowser对象。

(不允许上传图片,因此该图片包含在链接中)

这是带有列表框的屏幕,其中包含生成的项目以及单击的按钮。

http://imgur.com/6B8GO1m

按钮单击事件

这将在组合框中选择项目。 然后,它使用名称为Standards的项目列表(列表框中的项目)来创建Alrighty类的新实例。 该属性用第三行填充,然后我有另一个名为SaveXML的类(请参见下文),该类保存为XML。 然后将打开浏览器。

string selectedStandard = (string)cmbStandard.SelectedItem;
Alrighty info = new Alrighty();
info.Standards = _standardDefinitions;
SaveXML.SaveData(info, string.Format("{0}.xml", selectedStandard));

HTMLBrowser boss = new HTMLBrowser(selectedStandard);
boss.Show();

SaveXML类别

public static void SaveData(object obj, string filename)
{
    XmlSerializer sr = new XmlSerializer(obj.GetType());
    TextWriter writer = new StreamWriter(filename);
    sr.Serialize(writer, obj);
    writer.Close();
}

问题

当我单击按钮并使用Web Browser进入窗口时,出现以下代码:

http://imgur.com/zF465n5

从蓝色框中可以看到,当我删除此代码并为我的Stylesheet添加代码时,一切正常,但是问题是蓝色框中的代码不断生成,是否有一种方法可以不获取此代码创建的XML文件。

额外

如何使此字符串出现而不是在蓝色框中显示生成的代码:

<?xml-stylesheet type="text/xsl" href="StandardXS.xsl"?>

编辑:

public class SaveXML
{
    public static void SaveData(object obj, string filename)
    {

        //empty namespace and empty value
        XmlSerializerNamespaces alright = new XmlSerializerNamespaces();

        alright.Add("", "");

        XmlSerializer sr = new XmlSerializer(obj.GetType());
        TextWriter writer = new StreamWriter(filename);

        sr.Serialize(writer, obj, alright);
        writer.Close();

    }

    public void WriteXml(XmlWriter writer) { writer.WriteAttributeString(@"<?xml-stylesheet type=text/xsl href=StandardXS.xsl?>", string.Empty); }

}

您可以这样做:

XmlSerializerNamespaces namespace = new     XmlSerializerNamespaces();

//empty namespace and empty value
namespace.Add("", "");

XmlSerializer serializer = new XmlSerializer(someType);

//Serialize the object with custom namespace
serializer.Serialize(xmlTextWriter, myObj, namespace);

如我在评论中所述,要添加定制属性,请实现IXmlSerializable并实现WriteXml并添加您的定制属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM