我已经使用DataTable.WriteXML()
方法生成了xml,该方法将我的表字段转换为xml文件的元素-正是我所需要的。
现在,我想添加另一个元素并将现有元素作为其子元素。
现有:
<DocketImport>
<Docket>
<XRefCode>1578</XRefCode>
<Name>1578</Name>
<PieceRate>0</PieceRate>
<OrgXRefCode>terminalA</OrgXRefCode>
</Docket>
</DocketImport>
所需:
<DocketImport>
<Docket>
<XRefCode>1578</XRefCode>
<Name>1578</Name>
<PieceRate>0</PieceRate>
<Org>
<OrgXRefCode>terminalA</OrgXRefCode>
</Org>
</Docket>
</DocketImport>
答案 0 :(得分:0)
如果以下结果可以接受:
<?xml version="1.0" standalone="yes"?>
<DocumentElement>
<DataTable1>
<XRefCode>1578</XRefCode>
<Name>1578</Name>
<PieceRate>0</PieceRate>
<Org xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<OrgXRefCode>terminalA</OrgXRefCode>
</Org>
</DataTable1>
</DocumentElement>
您可以通过为DataTable的最后一列定义自定义类型来实现所需的行为
public class Org
{
public string OrgXRefCode { get; set; }
}
比您的DataTable初始化看起来如下:
var dataTable = new DataTable("DataTable2");
dataTable.Columns.AddRange(new DataColumn[]{
new DataColumn("XRefCode"),
new DataColumn("Name"),
new DataColumn("PieceRate"),
new DataColumn("Org", typeof(Org))
});
var dataRow = dataTable.NewRow();
dataRow["XRefCode"] = 1578;
dataRow["Name"] = 1578;
dataRow["PieceRate"] = 0;
dataRow["Org"] = new Org()
{
OrgXRefCode = "terminalA"
};
dataTable.Rows.Add(dataRow);
调用dataTable.WriteXml()
将产生您期望的XML