1
XMLをリスト(リスト<>)から所定の階層にフォーマットする必要があります。このリストには、銀行情報の場合、画像に示されているように複数の行にまたがってデータが表示されます。リストから複数の行に必要なデータが入れ子になったXML
XML出力は次のようにフォーマットする必要があります。
<ROOT>
<DocumentElement>
<Supplier>
<Company>STV</Company>
<Code>000199</Code>
<Name>TrafTrans</Name>
<BankAccounts>
<SupplierBankAccount>
<Bban>220-012510-63</Bban>
<Name>B1</Name>
</SupplierBankAccount>
<SupplierBankAccount>
<Bban>RUIL</Bban>
<Name>RUIL</Name>
</SupplierBankAccount>
</BankAccounts>
<SupplierAddresses>
<SupplierAddress>
<Type>PostalAddress</Type>
<Name>Loc TrafTrans</Name>
<IsDefault>true</IsDefault>
<AddressParts>
<SupplierAddressPart>
<AddressPartKey>STREET_NAME</AddressPartKey>
<AddressPartText>Somewhere</AddressPartText>
</SupplierAddressPart>
<SupplierAddressPart>
<AddressPartKey>COUNTRY</AddressPartKey>
<AddressPartText>SPAIN</AddressPartText>
</SupplierAddressPart>
</AddressParts>
</SupplierAddress>
</SupplierAddresses>
</Supplier>
</DocumentElement>
</ROOT>
私はすでにXMLにリストを変換した文字列を返すメソッドを持っています。しかし問題は、これがリストから1つの項目をフォーマットするだけであり、以下の項目に追加情報がある可能性があるということです。
public static string SuppliersToXML(List<SupplierItem> supplier)
{
CultureInfo ci = new CultureInfo("en-US");
XmlDocument doc = new XmlDocument();
var root = doc.CreateElement("ROOT");
var rootNode = doc.AppendChild(root);
var docElem = doc.CreateElement("DocumentElement");
var docElemNode = rootNode.AppendChild(docElem);
foreach (var item in supplier)
{
var supplierElem = doc.CreateElement("Supplier");
var companyElem = (XmlNode)doc.CreateElement("Company");
companyElem.InnerText = item.Company.ToString();
//more code...
supplierElem.AppendChild(companyElem);
//more code...
}
return doc.OuterXml;
}
それは、ウェブサイト/ポータルのですか? XSLT変換の使用はどうですか? –
'XmlDocument'でXMLをビルドするのは楽しい経験ではありません。間違いなく['XElement'](https://msdn.microsoft.com/library/bb387089)もチェックしてください。 –
@Vivek JainこれはWeb APIの一部です。私はXSLTを調べます – hatsjie