首頁 > 後端開發 > C++ > 在 .NET 中序列化 XML 時如何自訂命名空間聲明?

在 .NET 中序列化 XML 時如何自訂命名空間聲明?

DDD
發布: 2025-01-01 12:08:12
原創
470 人瀏覽過

How to Customize Namespace Declarations When Serializing XML in .NET?

在.NET 中自訂序列化XML 的命名空間宣告

嘗試序列化物件而不產生過多的XML 命名空間宣告(例如xsi 和xsd )時,就會出現挑戰。預設情況下,序列化程序將這些命名空間注入產生的 XML 文件中。

請考慮以下演示問題的程式碼片段:

StringBuilder builder = new StringBuilder();
XmlWriterSettings settings = new XmlWriterSettings();
settings.OmitXmlDeclaration = true;
using (XmlWriter xmlWriter = XmlWriter.Create(builder, settings))
{
    XmlSerializer s = new XmlSerializer(objectToSerialize.GetType());
    s.Serialize(xmlWriter, objectToSerialize);
}
登入後複製

產生的XML 文件將包含命名空間聲明:

<message xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" 
    xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" 
    xmlns="urn:something">
 ...
</message>
登入後複製

為了消除這些不必要的命名空間聲明,必須使用自訂命名空間物件:

...
XmlSerializer s = new XmlSerializer(objectToSerialize.GetType());
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("","");
s.Serialize(xmlWriter, objectToSerialize, ns);
登入後複製

透過利用XmlSerializerNamespaces類別並添加空字串作為鍵和值,可以覆蓋預設命名空間聲明並產生所需的輸出:

<message>
 ...
</message>
登入後複製

以上是在 .NET 中序列化 XML 時如何自訂命名空間聲明?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板