过去 2 天我一直被这个问题困扰,但仍然没有解决,我正在寻求帮助。
我的 Listbox
根据在 Combobox
中选择的项目,获取添加到其中的生成项目.当我点击按钮时 Create
出现一个带有 WebBrowser
的新窗口里面的对象。
(不允许上传图片,所以它包含在链接中)
这是带有列表框的屏幕,其中包含生成的项目以及单击的按钮。
http://imgur.com/6B8GO1m
按钮点击事件
这将获取在组合框中选择的项目。然后它创建了一个新的 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 并添加您的自定义属性。
关于c# - XMLSerializer - 添加到命名空间的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22991494/