• 締切済み

xml 大量に作成したい

for文を使用してxmlファイルを一気に作成したいと思っています。 下記の様にコーディングしたのですがエラー(型のオペランドを使用することはできません)が 表示され作成できません。 var xml= new XDocument(); for (int a = 1; a == 10000;a++) { xml = xml + new XDocument(        new XDeclaration( "1.0" , "utf-8" , "true" ) ,        new XComment( "LINQ to XML Sample http://keicode.com/" ) ,         new XElement( "Employees", new XElement( "Employee", new XElement("FirstName", "Keisuke"), new XElement("LastName", "Oyama"), new XElement("ID", a) ) ) ); } xml.Save( @"C:\Temp\Sample.xml" ); 結果として <?xml version="1.0" encoding="utf-8"?> <!--LINQ to XML Sample http://keicode.com/--> <Employees> <Employee> <FirstName>Keisuke</FirstName> <LastName>Oyama</LastName> <ID>1</ID> </Employee> </Employees> ~~~~10000万個~~~ <Employees> <Employee> <FirstName>Keisuke</FirstName> <LastName>Oyama</LastName> <ID>10000</ID> </Employee> </Employees> の様なファイルが作成したいのです。

みんなの回答

noname#212058
noname#212058
回答No.2

作成しようとしている XML はルート要素がないため、XDocument クラスでは作れません (ルート要素が何かは Google などで調べてください)。このようなファイルが作りたいのであれば、XDocument 以外の方法を使うしかありません。例えば、以下のように単純に文字列連結にしても良いでしょう。 System.Text.StringBuilder xml = new System.Text.StringBuilder(); xml.AppendLine("<?xml version=\"1.0\" encoding=\"utf-8\"?>"); for (int a = 1; a <= 10000; a++) { xml.AppendLine("<Employees>"); xml.AppendLine("<Employee>"); xml.AppendLine("<FirstName>Keisuke</FirstName>"); xml.AppendLine("<LastName>Oyama</LastName>"); xml.Append("<ID>"); xml.Append(a.ToString()); xml.AppendLine("</ID>"); xml.AppendLine("</Employee>"); xml.AppendLine("</Employees>"); } System.IO.File.WriteAllText(@"C:\Temp\Sample.xml", xml.ToString()); なお、ルート要素がない XML は一般的に良くありません。XML の構成の再考をお勧めします。(質問のようなデータでは、普通は <Employees> がルート要素になるように作るかと思います)

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.1

使用言語を書かれていないんですが・・・C#? またC#だとして >下記の様にコーディングしたのですがエラー(型のオペランドを使用することはできません)が表示され作成できません。 エラーメッセージを部分的に抜粋している理由もわかりませんが(VisualStudio 2015のC#だと「演算子'+'を'XDocument'と'XDocument'の型のオペランドに適用することはできません」と出ます) >xml = xml + new XDocument XDocumentに+演算子使用できるんですか?