XMLフォーマットから別のXMLフォーマットに変換するためのxsltがあります。xsltグループ化 - あるXMLフォーマットから他のXMLフォーマットに変換する
ソースファイルには複数の「製造指図」と1つの「販売注文」 私の宛先には、すべての製造指図を保持する「販売注文」が1つしかありません。ここで
は<GenomicOrder>
<SalesOrder>
....
<ProductionOrder>
....
</ProductionOrder>
<ProductionOrder>
....
</ProductionOrder>
<ProductionOrder>
....
</ProductionOrder>
</SalesOrder>
</GenomicOrder>
マイデシリアライズコードは
DataContractSerializer ser = new DataContractSerializer(typeof(SalesOrder));
FileStream fs =
new FileStream(
@"C:\realsample.xml",
FileMode.Open);
XmlDictionaryReader reader1 = XmlDictionaryReader.CreateTextReader(fs, new XmlDictionaryReaderQuotas());
//Deserialize the data and read it from the instance.
SalesOrder parent = (SalesOrder)ser.ReadObject(reader1, true);
reader1.Close();
私の成功した販売注文XSLT変換以下のようになり、以下のよう
<GenomicOrder>
<SalesOrder>
....
</SalesOrder>
<ProductionOrder>
....
</ProductionOrder>
<ProductionOrder>
....
</ProductionOrder>
<ProductionOrder>
....
</ProductionOrder>
</GenomicOrder>
私の先のxml形式である私のソースXMLフォーマットであります以下の通りである。
<xsl:template match="/">
<SalesOrder>
<xsl:apply-templates select="GenomicOrder/SalesOrder"/>
<ProductionOrders>
<xsl:apply-templates select="GenomicOrder/ProductionOrder"/>
</ProductionOrders>
</SalesOrder>
</xsl:template>
SalesOrder.OrderId = 1234; SalesOrder.ProductionOrder = null;
私の成功した製造指図XSLT変換は、以下の通りである
<xsl:template match="/">
<SalesOrder>
<ProductionOrders>
<xsl:apply-templates select="GenomicOrder/ProductionOrder"/>
</ProductionOrders>
<xsl:apply-templates select="GenomicOrder/SalesOrder"/>
</SalesOrder>
</xsl:template>
SalesOrder.OrderId = NULL; SalesOrder.ProductionOrder.OrderRef = 12345;
すべてのオブジェクトを1回のパスでデシリアライズするための変更があります。私は "GenomicOrder/ProductionOrder"と "GenomicOrder/SalesOrder"の両方について書かれた変換を持っています。
'SalesOrder'要素の後にある' ProductionOrder'要素を結果ツリーの 'SalesOrder'にラップするコードサンプルを投稿しました。サンプルがあなたの望むことをすると思います。 –
投稿したC#コードに問題があり、XSLTではない場合は、質問を再投稿するか、少なくともXSLTとC#の関係を説明することを検討してください。 –