我正在尝试序列化这个XML并且我已经完成了大部分工作,但我想正确地对信息进行分类,这是我当前的输出。
<CountryData>
<CountryName Type="Text">United States of America</CountryName>
<CountryName Type="Text">Kingdom of Belgium</CountryName>
<CountryCode Type="Text">US</CountryCode >
<CountryCode Type="Text">BE</CountryCode >
<PercentOfBusiness Type="Numeric">0.5</PercentOfBusiness>
<PercentOfBusiness Type="Numeric">0.5</PercentOfBusiness>
<AverageBusiness Type="Numeric">3.5%</AverageBusiness >
<AverageBusiness Type="Numeric">3.5%</AverageBusiness >
<SalesMade Type="Text">Very low </SalesMade >
<SalesMade Type="Text">Low</SalesMade >
</CountryData>
但我希望它像这样
<CountryData>
<Country>
<CountryName Type="Text">United States of America</CountryName>
<CountryCode Type="Text">US</CountryCode >
<PercentOfBusiness Type="Numeric">0.5</PercentOfBusiness>
<AverageBusiness Type="Numeric">3.5</AverageBusiness >
<SalesMade Type="Text">Very low</SalesMade >
</Country>
<Country>
<CountryName Type="Text">Kingdom of Belgium</CountryName>
<CountryCode Type="Text">BE</CountryCode >
<PercentOfBusiness Type="Numeric">0.5</PercentOfBusiness>
<AverageBusiness Type="Numeric">3.5</AverageBusiness >
<SalesMade Type="Text">low</SalesMade >
</Country>
</CountryData>
这就是我所拥有的
public class CountryData
{
#region Public Members
[XmlElement]
public List<string> CountryName = new List<string>();
[XmlElement]
public List<string> Countrycode= new List<string>();
[XmlElement]
public List<string> PercentOfBusiness = new List<string>();
[XmlElement]
public List<string> AverageBusiness= new List<string>();
[XmlElement]
public List<string> SalesMade= new List<string>();
然后我将这些变量设置为我的Feed和序列化中的w / e值
XmlSerializer serializer = new XmlSerializer(this.GetType());
XmlWriterSettings settings = new XmlWriterSettings();
StringBuilder sb = new StringBuilder();
XmlWriter writer;
settings.Indent = true;
settings.IndentChars = " ";
settings.OmitXmlDeclaration = true;
writer = XmlWriter.Create(sb, settings);
serializer.Serialize(writer, CountryData);
writer.Close();
return sb.ToString();
我是否需要更改实例化序列化对象的方式?还可以删除每个节点的数据类型信息(例如,CountryName Type =“Text”
感谢。
答案 0 :(得分:5)
您希望CountryData
类包含国家/地区列表,例如:
public class CountryData
{
public List<Country> Countries { get; set; }
public CountryData() { Countries = new List<Country>(); }
}
public class Country
{
[XmlElement]
public string CountryName { get; set; }
[XmlElement]
public string Countrycode { get; set; }
[XmlElement]
public string PercentOfBusiness { get; set; }
[XmlElement]
public string AverageBusiness { get; set; }
[XmlElement]
public string SalesMade { get; set; }
}
它会产生一个与你要求的xml略有不同的xml,但它有意义:
<?xml version="1.0" encoding="utf-8"?>
<CountryData
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Countries>
<Country>
<CountryName>name</CountryName>
<Countrycode>code</Countrycode>
<PercentOfBusiness>12</PercentOfBusiness>
<AverageBusiness>123</AverageBusiness>
<SalesMade>120012</SalesMade>
</Country>
<Country>
<CountryName>name2</CountryName>
<Countrycode>code2</Countrycode>
<PercentOfBusiness>34</PercentOfBusiness>
<AverageBusiness>345</AverageBusiness>
<SalesMade>453453543</SalesMade>
</Country>
</Countries>
</CountryData>
public class Program
{
public static void Main(string[] args)
{
XmlSerializer xsSubmit = new XmlSerializer(typeof(CountryData));
var subReq = new CountryData();
subReq.Countries.Add(new Country
{
CountryName = "name",
Countrycode = "code",
PercentOfBusiness = "12",
AverageBusiness = "123",
SalesMade = "120012"
});
subReq.Countries.Add(new Country
{
CountryName = "name2",
Countrycode = "code2",
PercentOfBusiness = "34",
AverageBusiness = "345",
SalesMade = "453453543"
});
var xml = "";
using (var sww = new StringWriter())
{
using (XmlWriter writer = XmlWriter.Create(sww))
{
xsSubmit.Serialize(writer, subReq);
xml = sww.ToString();
}
}
}
}