需求描述:
在客户端有一个DataSet中存储有两个DataTable,一个是新增的若干条记录,一个是修改的若干条记录,
欲将其形成XML字符,作为一个参数传入到服务器端数据库存储过程中的XML类型变量中,再由存储过程解析XML,批量执行增加、修改操作利用 dataSet.GetXml() 方法取出的XML字符串如下:
<Detail>
  <ADD>
    <ID>1</ID>
    <Color>BLACK MULTI</Color>
    <Size>36</Size>
    <Barcode>883760523336</Barcode>
    <InvoiceQty>1</InvoiceQty>
    <Re />
  </ADD>
  <ADD>
    <ID>2</ID>
    <Color>BLACK MULTI</Color>
    <Size>32</Size>
    <Barcode>883760523337</Barcode>
    <InvoiceQty>2</InvoiceQty>
    <Re />
  </ADD>
  <UPDATE>
    <ID>7</ID>
    <Color>RED</Color>
    <Size>31</Size>
    <Barcode>883735523336</Barcode>
    <InvoiceQty>1</InvoiceQty>
    <Re>TEST</Re>
  </UPDATE>
  <UPDATE>
    <ID>9</ID>
    <Color>BLACK</Color>
    <Size>32</Size>
    <Barcode>883435523337</Barcode>
    <InvoiceQty>3</InvoiceQty>
    <Re />
  </UPDATE>
</Detail>但由于记录行数庞大,此格式的XML字符字节数太大,网络传输缓慢,想优化下,转变为属性节点格式的XML
<Detail>
<ADD ID="1" Color="BLACK MULTI" Size="36" Barcode="883760523336" InvoiceQty="1" Re="" />
<ADD ID="2" .... />
.....
<UPDATE ID="7" .... />
<UPDATE ID="9" .... />
.....
</Detail>其中 <ADD>, <UPDATE> 的节点数不固定,另外它们的子节点数量和名称不希望写死,
最笨的方法是利用XMLDOC重建一个XML,利用循环遍历读取,写入....能不能利用XSLT映射转换的方法转换?这个XSLT如何写?StringWriter output = new StringWriter();
XslCompiledTransform transform = new XslCompiledTransform();
System.Xml.Xsl.XslTransform tt= new System.Xml.Xsl.XslTransform();           
transform.Load(??);
transform.Transform(??, null, output);
string xmlstring = output.ToString();
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output method="text" omit-xml-declaration="yes"/>
<xsl:template match="/"><此处如何写??></xsl:template></xsl:stylesheet>
最后感谢各位大侠出手相助!!!