c# - XMLSerializer - 添加到命名空间的类?

标签 c# xml wpf namespaces webbrowser-control

过去 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/

相关文章:

c# - Windows 商店应用程序和 WPF 应用程序之间的通用类

c# - 路由参数的 XML 注释

xml - 合并 XML 文档

c# - 在 XmlDocument 中查找字符串

wpf - 呈现 UserControl.Resources

wpf - 如何使用文本 block 在 xaml 网格上设置可滚动条

c# - 帮助中的 View 过滤器不起作用

javascript - 母版页上的 LinkBut​​ton 不会在 ASP.NET 中的第二个子页上触发

c# - VS2015不显示错误

java - 使用 Java 编写不同字符编码的 XML