簡體   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