我一直在尋找到測試我的程序與一個大的XML文件,看看它如何與大型數據集執行,但是我並不想進入生成文件的努力有〜1000個條目。我會在這裏整整一週!創建測試數據(快速)大型XML文件
有沒有一種方法可以快速做一定的結構? 我的程序讀取此佈局的XML文檔:
@"<root>
<Person>
<Name>Joe Doe</Name>
<StartDate>2007-01-01</StartDate>
<EndDate>2009-01-01</EndDate>
<Location>London</Location>
</Person>
<Person>
<Name>John Smith</Name>
<StartDate>2012-06-15</StartDate>
<EndDate>2014-12-31</EndDate>
<Location>Cardiff</Location>
</Person>
...
等 我發現一些網上的發電機像Mockaroo但它們在它們所產生的結構剛性。我也研究了諸如autoFixture之類的庫,但我不覺得這是我在這種情況下尋找的。
如果有人能爲我提供關於如何做到這一點一些建議,我會很感激一些幫助!謝謝!
編輯:解
class Program
{
static void Main(string[] args)
{
XmlDocument xmlDoc = new XmlDocument();
XmlDeclaration xmlDeclaration = xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", null);
XmlNode rootNode = xmlDoc.CreateElement("Root");
xmlDoc.AppendChild(rootNode);
for (int i = 0; i <= 1000; i++)
{
XmlNode PersonNode = xmlDoc.CreateElement("Person");
rootNode.AppendChild(PersonNode);
XmlNode NameNode = xmlDoc.CreateElement("Name");
NameNode.InnerText = RandomString();
PersonNode.AppendChild(NameNode);
XmlNode StartNode = xmlDoc.CreateElement("StartDate");
StartNode.InnerText = RandomStartTime();
PersonNode.AppendChild(StartNode);
XmlNode EndNode = xmlDoc.CreateElement("EndDate");
EndNode.InnerText = RandomEndTime();
PersonNode.AppendChild(EndNode);
XmlNode LocationNode = xmlDoc.CreateElement("Location");
LocationNode.InnerText = "None";
PersonNode.AppendChild(LocationNode);
System.Threading.Thread.Sleep(20);
}
xmlDoc.Save("XmlWhitelist_Test.xml");
}
public static string RandomString()
{
int length = 6;
const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var random = new Random();
return new string(Enumerable.Repeat(chars, length)
.Select(s => s[random.Next(s.Length)]).ToArray());
}
public static string RandomEndTime()
{
Random rnd = new Random();
int year = rnd.Next(2005, 2020);
int month = rnd.Next(1, 12);
int day = DateTime.DaysInMonth(year, month);
int Day = rnd.Next(1, day);
DateTime dt = new DateTime(year, month, Day);
string date = dt.ToString("yyyy-MM-dd");
return date;
}
public static string RandomStartTime()
{
Random rnd = new Random();
int year = rnd.Next(1970, 2004);
int month = rnd.Next(1, 12);
int day = DateTime.DaysInMonth(year, month);
int Day = rnd.Next(1, day);
DateTime dt = new DateTime(year, month, Day);
string date = dt.ToString("yyyy-MM-dd");
return date;
}
}
你的XML是簡單使用的StreamWriter與LOOP和可變迭代器產生儘可能多的「XML」作爲要直接到磁盤。 – montewhizdoh