[英]Generate xml from c# class
如果有人可以幫助我構造以下格式的XML,我將不勝感激:
<requests>
<row no="1">
<fl val="Subject">Add Records Demo</fl>
<fl val="ContactName">John</fl>
<fl val="ProductName">Customer Care</fl>
<fl val="Email">john@demo.com</fl>
<fl val="Phone">002200330044</fl>
</row>
</requests>
到目前為止,這是我得到的:
<?xml version="1.0" encoding="utf-8"?>
<request>
<row>
<Subject>Add Records Demo</Subject>
<ContactName>John</ContactName>
<ProductName>Customer Care</ProductName>
<Email>john@demo.com</Email>
<Phone>002200330044</Phone>
</row>
</request>
這是我用來構造xml的代碼
List<ZohoVM> lzr = new List<ZohoVM>();
lzr.Add(zvm);
Request rp = new Request();
rp.zohorow = lzr;
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("", "");
XmlSerializer xsdocument = new XmlSerializer(typeof(Request));
StringWriter sw = new Utf8StringWriter();
string xml = "";
using (XmlWriter writer = XmlWriter.Create(sw))
{
xsdocument.Serialize(writer, rp, ns);
xml = sw.ToString();
}
return xml;
我的要求班
[XmlRoot("request")]
public class Request
{
public Request()
{
zohorow = new List<ZohoVM>();
}
[XmlElement("row")]
public List<ZohoVM> zohorow { get; set; }
}
還有我的ZohoVm類
public class ZohoVM
{
public string Subject { get; set; }
public string ContactName { get; set; }
public string ProductName { get; set; }
public string Email { get; set; }
public int Phone { get; set; }
}
我真正想要的是在xml標記中包含“ fl值”。 提前致謝
我擔心XmlSerializer
不夠靈活。 但是,您可以做的是從要實現的示例XML中提取XML-Schema。 使用上述內容,例如可以編寫以下架構:
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="requests" type="Request"/>
<xs:complexType name="RowFlag">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="val" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="Row">
<xs:sequence>
<xs:element type="RowFlag" name="fl" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
<xs:attribute type="xs:byte" name="no"/>
</xs:complexType>
<xs:complexType name="Request">
<xs:sequence>
<xs:element type="Row" name="row"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
也許您可以根據需要優化此架構。 然后,可以使用帶有/classes
選項的xsd.exe生成用於創建此架構的/classes
。 在生成的代碼中,可以添加便捷屬性,然后必須使用XmlIgnore
-attribute進行標記。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.