2008/12/25(Thu) 13:25:31 編集(投稿者)
はじめましてm(_ _)m
恥ずかしながら本投稿が初投稿となりますため、
不備などございましたらご指摘いただければ幸いです。
2点目のご質問に関してですが、
ゆきさんの仰るとおり"xmlns:xsi"並びに"xmlns:xsd"の名前空間宣言は
省略することが可能です(削除してもIEで正常に表示できますし)。
またXMLSerializerクラスは、Serializeメソッドに引数として明示的に
名前空間宣言(XmlSerializerNamespacesクラス)を指定した場合、
前述の名前空間宣言を使用せずに指定した名前空間宣言を使用して
XMLファイルを出力します。このため、接頭辞と名前空間が空の宣言を
指定することにより、結果として"xmlns:xsi"並びに"xmlns:xsd"の
名前空間宣言を出力しないようにすることが可能です。
文章ではいまひとつわかりにくいと思いますので、
下記にサンプルコードを記載させていただきます。
----------------------------------------------------------------------
using System;
using System.IO;
using System.Text;
using System.Xml.Serialization;
namespace Default
{
/// <summary>シリアライズの対象となるクラス</summary>
public class Person
{
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
}
/// <summary>エントリーポイント</summary>
public class Program
{
static void Main(string[] args)
{
//シリアライズするオブジェクトを生成
Person person = new Person();
person.Name = "MOTO";
//シリアライズに使用するストリームを生成
//※このストリームのエンコーディング形式がXML宣言のencoding属性値となる
using (StreamWriter writer = new StreamWriter("Person.xml", false, Encoding.GetEncoding("euc-jp")))
{
//空の名前空間宣言を生成
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("", "");
//オブジェクトをXMLファイルにシリアライズ
//※空の名前空間宣言を既定の空間空間として指定する
XmlSerializer serializer = new XmlSerializer(typeof(Person));
serializer.Serialize(writer, person, ns);
}
}
}
}
----------------------------------------------------------------------
xsd.exeを用いてスキーマから作成したオブジェクトにおいても、
おそらく上記方法の応用で実現できると思います。
ps:Hongliangさんがすでに解決方法を記載されていたのですね…(; ̄ー ̄
確認せずに重複投稿してしまい申し訳ございませんでしたm(;_ _)m