Web サービスの要求として使用する必要がある XSD がいくつかあります。要求を文字列 (またはファイル) にシリアル化すると、ルート要素は常に xml 要素として繰り返されます。どうしてこれなの?どうすればこれを防ぐことができますか?
LinqToXsd (ナゲット パッケージ) V2.0.2 を使用します。VS2013で。
XSD:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns0="http://blah.com" targetNamespace="http://blah.com">
<xsd:complexType name="SomeValues">
<xsd:sequence>
<xsd:element name="Value1" type="xsd:int" minOccurs="0"/>
<xsd:element name="Value2" type="xsd:int" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
結果の XML (ご覧のとおり、ルート 'SomeValues' が繰り返されます):
<?xml version="1.0" encoding="utf-16"?>
<SomeValues>
<SomeValues xmlns="http://blah.com">
<Value1 xmlns="">1</Value1>
<Value2 xmlns="">2</Value2>
</SomeValues>
</SomeValues>
シリアル化のスニペットは次のとおりです。
private static string SerializeTest()
{
var content = new SomeValues
{
Value1 = 1,
Value2 = 2
};
XmlSerializer serializer = new XmlSerializer(content.GetType());
using (var stringWriter = new StringWriter())
{
serializer.Serialize(stringWriter, content);
return stringWriter.ToString();
}
}