[英]C# Xml Serialization nodes
我有這些課
public class ProdutosServicos
{
public List<Produto> Produto { get; set; }
}
public class Produto
{
public string Descricao { get; set; }
public CodigoTipo Codigo { get; set; }
public string Quantidade { get; set; }
public string Unidade { get; set; }
public string ValorUnitario { get; set; }
}
xml像這樣被序列化:
<ProdutosServicos>
<Produto>
<Produto>
...
</Produto>
</Produto>
</ProdutosServicos>
但我想這樣生成:
<ProdutosServicos>
<Produto>
...
</Produto>
</ProdutosServicos>
我找不到任何Xml屬性,可以在序列化過程中放置一個屬性來“刪除”第一個Produto節點。
關於如何做到這一點的任何想法?
謝謝。
只需在List屬性中使用屬性XmlElement。 像這樣。
public class ProdutosServicos
{
// This is the attribute that makes your XML Array looks like a list of XML Elements.
[XmlElement]
public List<Produto> Produto { get; set; }
}
結果將是這樣的:
<?xml version="1.0" encoding="utf-16"?>
<ProdutosServicos xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Produto>
...
</Produto>
<Produto>
...
</Produto>
<Produto>
...
</Produto>
</ProdutosServicos>
請參閱以下解決方案,
類定義
[Serializable]
[XmlRoot("ProdutosServicos")]
public class ProdutosServicos
{
[XmlElement("Producto")]
public List<Produto> Produto { get; set; }
}
[Serializable]
public class Produto
{
public string Descricao { get; set; }
public CodigoTipo Codigo { get; set; }
public string Quantidade { get; set; }
public string Unidade { get; set; }
public string ValorUnitario { get; set; }
}
[Serializable]
public class CodigoTipo
{
}
要序列化的代碼 ,
XmlSerializer serializer = new XmlSerializer(typeof(ProdutosServicos));
var productoServices = new ProdutosServicos();
Produto producto1 = new Produto();
producto1.Descricao = "Descricao1";
producto1.Quantidade = "Quantidade1";
Produto producto2 = new Produto();
producto2.Descricao = "Descricao2";
producto2.Quantidade = "Quantidade2";
List<Produto> collectionProducto = new List<Produto>();
collectionProducto.Add(producto1);
collectionProducto.Add(producto2);
productoServices.Produto = collectionProducto;
string xmlString = string.Empty;
using (StringWriter stringWriter = new StringWriter())
{
using (XmlWriter writer = XmlWriter.Create(stringWriter))
{
serializer.Serialize(writer, productoServices);
//String in required format
xmlString = stringWriter.ToString();
}
}
XML輸出
<?xml version="1.0" encoding="utf-16"?>
<ProdutosServicos xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Producto>
<Descricao>Descricao1</Descricao>
<Quantidade>Quantidade1</Quantidade>
</Producto>
<Producto>
<Descricao>Descricao2</Descricao>
<Quantidade>Quantidade2</Quantidade>
</Producto>
</ProdutosServicos>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.