16

オブジェクトをxmlにシリアル化し、次に文字列にシリアル化したい。

  public class MyObject
  {
    [XmlElement]
    public string Name
    [XmlElement]
    public string Location;
  }

次のような1行の文字列を取得したいと思います。

<MyObject><Name>Vladimir</Name><Location>Moskov</Location></MyObject>

私はそのようなコードを使用しています:

  XmlWriterSettings settings = new XmlWriterSettings();
  settings.OmitXmlDeclaration = true;
  settings.Indent = true;
  StringWriter StringWriter = new StringWriter();
  StringWriter.NewLine = ""; //tried to change it but without effect
  XmlWriter writer = XmlWriter.Create(StringWriter, settings);
  XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces();
  namespaces.Add(string.Empty, string.Empty);
  XmlSerializer MySerializer= new XmlSerializer(typeof(MyObject ));
  MyObject myObject = new MyObject { Name = "Vladimir", Location = "Moskov" };

  MySerializer.Serialize(writer, myObject, namespaces);
  string s = StringWriter.ToString();

これは私が得るものに最も近いものです:

<MyObject>\r\n  <Name>Vladimir</Name>\r\n  <Location>Moskov</Location>\r\n</MyObject>

後で文字列から「\r\n」を削除できることは知っています。しかし、後で削除するのではなく、まったく作成しないようにしたいと思います。

御時間ありがとうございます。

4

2 に答える 2

14

あなたは試すことができます:

settings.NewLineHandling = NewLineHandling.None;
settings.Indent = false;

これは私にとって、次のようになります。

<MyObject><Name>Vladimir</Name><Location>Moskov</Location></MyObject>
于 2010-10-25T11:37:52.943 に答える
9

上記の入力を使用しました。これは、どこでも再利用できるXML文字列メソッドのジェネリックオブジェクトです。

public static string ObjectToXmlString(object _object)
{
    string xmlStr = string.Empty;

    XmlWriterSettings settings = new XmlWriterSettings();
    settings.Indent = false;
    settings.OmitXmlDeclaration = true;
    settings.NewLineChars = string.Empty;
    settings.NewLineHandling = NewLineHandling.None;

    using (StringWriter stringWriter = new StringWriter())
    {
        using (XmlWriter xmlWriter = XmlWriter.Create(stringWriter, settings))
        {
            XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces();
            namespaces.Add(string.Empty, string.Empty);

            XmlSerializer serializer = new XmlSerializer(_object.GetType());
            serializer.Serialize(xmlWriter, _object, namespaces);

            xmlStr = stringWriter.ToString();
            xmlWriter.Close();
        }

        stringWriter.Close();
    }

    return xmlStr;
}
于 2013-02-15T04:38:18.220 に答える