我需要从列表中将XML格式化为给定的层次结构(List<>)。对于银行信息,该列表包含分布在多行中的数据,如图所示。
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并返回字符串的方法。但问题是,这只会从列表中格式化一个项目,并且在以下项目中可能会有其他信息。
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;
}
答案 0 :(得分:0)
我自己找到了答案,它可能不是有史以来最漂亮的代码。但它确实起到了作用。
public async Task<bool> UploadFromGUI(string user, string service, int orderId, string filepath)
{
DateTime now = DateTime.Now;
dbx = new DropboxClient(login_key);
string path = "/files/" + user + "/" + service + "/order - " + orderId + "/received";
string fileName = now.Year + "" + now.ToString("MM") + "" + now.ToString("dd") + "" + Path.GetExtension(filepath);
try
{
using (var mem = new MemoryStream(File.ReadAllBytes(filepath)))
{
var updated = await dbx.Files.UploadAsync(
path + "/" + fileName,
WriteMode.Overwrite.Instance,
body: mem);
return true;
}
}
catch
{
return false;
}
}
{
public static string SuppliersToXML(List<SupplierItem> supplier)
}