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); }
}
你可以这样做:
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并添加自定义属性。