8

値が空白の XML ノードがあります。例:

<sampleNode> </sampleNode>

シリアライザーを使用して XML ドキュメントからデータを取得し、オブジェクトに格納しています。今、私が直面している問題は次のとおりです。上記のサンプル ノードのように、XML ノードの値に空白しか含まれていない場合、シリアライザーはそれを string.Empty として解釈します。

どうすればこれを克服できますか?実際の空白、つまり " " を取得する必要があります。本当にありがとう!

4

3 に答える 3

12

XmlDocument を使用していると仮定すると、PreserveWhiteSpaceプロパティを True に設定する必要があります。

XmlReader を使用する場合は、WhitespaceHandlingプロパティ WhitespaceHandling.All を設定します。

シリアル化中に空白を保持する方法については、MSDN の記事参照してください。

さまざまなシリアライザーがこのさまざまな方法を処理します。このフォーラムの投稿に従って、これにはXmlTextReaderを使用してみてください。

于 2009-12-18T08:30:57.607 に答える
4

サンプルクラス:

using System;

namespace GeneralTesting
{
    [Serializable]
    public class SampleNode
    {
        public string sampleNode = " ";
    }
}

そしてサンプルプログラム:

    XmlSerializer xmls = new XmlSerializer(typeof(SampleNode));
    SampleNode sn = new SampleNode();
    using (FileStream fs = File.Open(@"C:\test.xml", FileMode.Create))
    {
        xmls.Serialize(fs, sn);
    }
    using (FileStream fs = File.OpenRead(@"C:\test.xml"))
    {
        XmlReaderSettings xmlrs = new XmlReaderSettings();
        xmlrs.IgnoreWhitespace = false;
        using (XmlReader xmlr = XmlReader.Create(fs, xmlrs))
        {
            Console.WriteLine("!{0}!", ((SampleNode) xmls.Deserialize(xmlr)).sampleNode); //output: ! !
        }
    }
于 2009-12-18T08:52:30.043 に答える
1

スペースの削除を避けるために、CDATA プレースホルダーを使用できます。

<sampleNode><![CDATA[ ]]></sampleNode>
于 2009-12-18T08:30:15.507 に答える