第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將 XSI 類型添加到使用 LINQ 序列化的元素

如何將 XSI 類型添加到使用 LINQ 序列化的元素

C#
GCT1015 2023-08-13 14:02:16
我想序列化特定類的類型的對象并包含特定的 XSI 類型我可以在 LINQ 中執(zhí)行此操作嗎?
查看完整描述

2 回答

?
茅侃侃

TA貢獻1842條經(jīng)驗 獲得超22個贊

要獲取以下 XML:


<Model xsi:type="SettingsModel" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <Name>Test05</Name>

  <IsActive>false</IsActive>

  <IsHidden>false</IsHidden>

</Model>

您可以使用以下代碼:


var model = new { Name = "Test05", IsActive = false, IsHidden = false };


var namespaceName = "http://www.w3.org/2001/XMLSchema-instance";

XNamespace xsi = XNamespace.Get(namespaceName);

var x = new XElement("Model",

    new XAttribute(xsi + "type", "SettingsModel"),

    new XAttribute(XNamespace.Xmlns + "xsi", namespaceName),

    new XElement("Name", model.Name),

    new XElement("IsActive", model.IsActive),

    new XElement("IsHidden", model.IsHidden)

    );


Console.WriteLine(x);

LINQ to XML 是一種令人沮喪的練習(xí)。從長遠來看,您可能更喜歡使用帶有適當(dāng) XML 序列化裝飾器的具體類。


===編輯===


以下是將數(shù)據(jù)寫入 XML 文件的一些附加代碼:


var settings = new XmlWriterSettings()

{

    Indent = true,

    OmitXmlDeclaration = true

};

using (var stream = new FileStream("Test05.xml", FileMode.OpenOrCreate, FileAccess.Write, FileShare.None))

using (var writer = XmlWriter.Create(stream, settings))

{

    x.WriteTo(writer);

}


查看完整回答
反對 回復(fù) 2023-08-13
?
胡子哥哥

TA貢獻1825條經(jīng)驗 獲得超6個贊

LINQ 代表語言集成查詢,它就是這樣:一種查詢技術(shù),允許您將來自各種數(shù)據(jù)源的數(shù)據(jù)查詢到對象結(jié)果中。您想要做一些完全不同的事情,所以 LINQ 是一個錯誤的工具。


另外,我猜想用于從示例 XML 文件(或架構(gòu))生成類的 xsd.exe 對您沒有多大幫助,因為據(jù)我所知,它不夠聰明,無法檢測架構(gòu)類之間的繼承。


因此,我建議手動編寫 XML 架構(gòu),然后使用 xsd.exe 為該架構(gòu)生成類。然后,您可以實例化這些類,并且XmlSerializer將按照您的預(yù)期提供輸出。


架構(gòu)應(yīng)該類似于以下內(nèi)容(我在這里排除了實際的模型內(nèi)容,您必須選擇是否將其放入Model或SettingsModel)。


<xs:element name="Model" type="Model" />

<xs:class name="Model" abstract="True">

  <xs:complexContent />

</xs:class>

<xs:class name="SettingsModel">

  <xs:complexContent>

    <xs:extension base="Model" />

  </xs:complexContent>

</xs:class>


查看完整回答
反對 回復(fù) 2023-08-13
  • 2 回答
  • 0 關(guān)注
  • 172 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號