XMLSerializer-已将类添加到命名空间

本文关键字:命名空间 添加 XMLSerializer- | 更新日期: 2023-09-27 17:57:49

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

我的Listbox会根据在Combobox中选择的项目将生成的项目添加到其中。当我点击按钮Create时,会出现一个新窗口,里面有一个WebBrowser对象

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

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

https://i.stack.imgur.com/ozI7O.jpg

按钮点击事件

这将获取组合框中选定的项目。然后,它创建一个新的Alrighty类实例,该实例具有名为Standards的属性,并具有项目列表(Listbox中的项目)。该属性用第三行填充,然后我有另一个名为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();

保存XML类

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的窗口时,会出现以下代码:

https://i.stack.imgur.com/Am1fU.jpg

正如你从蓝色框中看到的,当我删除这个代码并为我的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); }
}

XMLSerializer-已将类添加到命名空间

你可以这样做:

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并添加自定义属性。