1

1 つの大きなファイルに複数のメッセージを含む XML ファイルがあります。メッセージごとにファイルを単一の xml ファイルに分割することを目的としています。メッセージの最初のインスタンスのみを取得する ac# コードがあります。ここで何が欠けているのか教えてください:

これが私のコードです:

      string strSeq;
      string strFileName;
      XDocument doc = XDocument.Load(@"C:\XMl\MR.xml");
      var newDocs = doc.Descendants("Message")
               .Select(d => new XDocument(new XElement("FileDump", d)));
             foreach (var newDoc in newDocs)
              {
               strSeq = XDocument.Load(@"C:\XMl\MR.xml").XPathSelectElement
               "//FileDump/Message/MsgID").Value;           

                strFileName = "MR_" + strSeq + ".xml";
                newDoc.Save(Console.Out); Console.WriteLine();
                newDoc.Save(@"C:\xml\MR\Tst\" + strFileName);
                Console.WriteLine();
               }
4

2 に答える 2

1

newDocの代わりにメッセージ ID を検索する必要がありますdoc

foreach (var newDoc in newDocs)
{
    strSeq = newDoc.XPathSelectElement("//FileDump/Message/MsgID").Value;           

    strFileName = "MR_" + strSeq + ".xml";
    newDoc.Save(Console.Out); Console.WriteLine();
    newDoc.Save(@"C:\xml\MR\Tst\" + strFileName);
    Console.WriteLine();
}
于 2013-09-07T14:26:19.457 に答える
0

試す、

string path = @"C:\xml\MR\Tst\MR_";

XElement root = XElement.Load(file);
foreach(XElement message in root.Descendants("Message"))
{
    string id = message.Element("MsgID").Value;
    message.Save(path + id + ".xml");
}
于 2013-09-07T15:44:55.027 に答える