1. ホーム
  2. c#

[解決済み] .NETでオブジェクトをシリアライズする際に、xsiとxsdの名前空間をすべて省略することはできますか?

2022-04-29 02:33:09

質問

コードはこのようになります。

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);
}

出来上がったシリアライズ文書には,次のように名前空間が含まれる。

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

xsiとxsdの名前空間を削除するには、以下の答えに従えばよい。 xmlns="... "を取得せずにオブジェクトをXMLにシリアライズする方法は? .

メッセージタグを <message> (namespace属性なし)。 どうすればよいのでしょうか?

どのように解決するのですか?

...
XmlSerializer s = new XmlSerializer(objectToSerialize.GetType());
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("","");
s.Serialize(xmlWriter, objectToSerialize, ns);