2016-10-31 2 views
0

からXMLを生成:は、誰かが私には、次の形式でXMLを構築する手助けができれば、私は感謝C#クラス

<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">[email protected]</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>[email protected]</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; 

マイRequestクラス

を構築するために使用したコード0
[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値" を持つことです。事前に感謝します

+0

XmlDocument/Xdocumentの代わりにシリアル化を使用する理由は、フォーマットを非常に気にしているからです。 –

答えて

0

私は恐れてXmlSerializerあなたが望むほど柔軟ではないことを心配します。ただし、達成したいXMLサンプルからXMLスキーマを抽出することができます。上記を使用して、たとえば、次のスキーマを書くことができます。

<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を使用して、このスキーマを作成するクラスを生成できます。生成されたコードでは、XmlIgnore属性でマークする必要がある便利なプロパティを追加できます。

関連する問題