1
XmlReaderを使用しているときにXmlSerializer
を使用するときに文字列をトリミングするのに問題があります。 IgnoreWhitespaceオプションは効果を示さず、要素文字列にはまだ\ nと空白が含まれています。C#XmlSerializerトリムホワイトスペース
"オンザフライ"でトリミングする方法はありますか? 私は、文字列
の配列にデシリアライズするので、私はここでは例のXMLです、このような方法を好む:
<?xml version='1.0' encoding='UTF-8'?>
<root>
<element>
some random string
</element>
<element>
another random string
</element>
</root>"
そしてここでのサンプルコードがあります:
class Program
{
public static void Main(string[] args)
{
string xml =
@"<?xml version='1.0' encoding='UTF-8'?>
<root>
<element>
some random string
</element>
<element>
another random string
</element>
</root>";
var string_reader = new StringReader(xml);
var xml_reader = XmlReader.Create(string_reader, new XmlReaderSettings()
{
IgnoreWhitespace = true //setting this option doesn't work
});
root d = (root)new XmlSerializer(typeof(root)).Deserialize(xml_reader);
d.elements[0].Contains("\n"); //true
//Dispose string/xml reader
Console.Read();
}
}
public class root
{
[XmlElement(ElementName ="element")]
public string[] elements { set; get; }
}
IgnoreWhiteSpa ceプロパティは、XMLを読み込み、要素と属性の間の空白を無視するためのものです。要素の値から空白を削除することはありません。詳細はこちらhttps://msdn.microsoft.com/en-us/library/system.xml.xmlreadersettings.ignorewhitespace(v=vs.110).aspx – Mangist
ありがとうございました。このシナリオで私が何を使うことができるか知っていますか? – Freggar
XMLファイルを読み込んだ後にroot.elements配列をループし、手作業で空白を削除してください。 – Mangist