2013-07-07 2 views
-1

У меня есть файл XML, который имеет следующуюЧтение XML-файл так же, как это

Все, что я пытаюсь сделать, это отобразить текст в нескольких строках текстового поля так же, как он находится в файле. Я нашел код на сайте Microsoft и немного изменил его для работы, но я все еще не совсем там.

<Employees> 
    <Employee> 
    <Name>Davolio, Nancy</Name> 
    <Title>Sales Representative</Title> 
    <BirthDay>12/08/1948</BirthDay> 
    <HireDate>05/01/1992</HireDate> 
    </Employee> 
    <Employee> 
    <Name>Fuller, Andrew</Name> 
    <Title>Vice President, Sales</Title> 
    <BirthDay>02/19/1952</BirthDay> 
    <HireDate>08/14/1992</HireDate> 
    </Employee> 
    <Employee> 
    <Name>Leverling, Janet</Name> 
    <Title>Sales Representative</Title> 
    <BirthDay>08/30/1963</BirthDay> 
    <HireDate>04/01/1992</HireDate> 
    </Employee> 

Код:

XmlTextReader reader = new XmlTextReader("Employees.xml"); 

string contents = ""; 
while (reader.Read()) 
{ 
    reader.MoveToContent(); 
    if (reader.NodeType == System.Xml.XmlNodeType.Element) 
     contents += "<" + reader.Name + ">\n "; 
    if (reader.NodeType == System.Xml.XmlNodeType.Text) 
     contents += reader.Value + "</" + reader.Name+ ">\n"; 

} 

//Console.Write(contents); 

txtStats.Text = "File Creation Time = " + File.GetCreationTime(Server.MapPath("../XMLFiles/Employees.xml")).ToString() 
    + "\n" + "File Last Access Time = " + File.GetLastAccessTime(Server.MapPath("../XMLFiles/Employees.xml")).ToString() 
    + "\n" + "File Last Write Time = " + File.GetLastWriteTime(Server.MapPath("../XMLFiles/Employees.xml")).ToString() 
    + "\n" 
    + "\n" 
    + contents.ToString(); 

Это заставляет меня следующее.

<Employees> 
<Employee> 
<Name> 
Davolio, Nancy</> 
<Title> 
Sales Representative</> 
<BirthDay> 
12/08/1948</> 
<HireDate> 
05/01/1992</> 
<Employee> 
<Name> 
Fuller, Andrew</> 
<Title> 
Vice President, Sales</> 
<BirthDay> 
02/19/1952</> 
<HireDate> 
08/14/1992</> 
<Employee> 
<Name> 
Leverling, Janet</> 
<Title> 
Sales Representative</> 
<BirthDay> 
08/30/1963</> 
<HireDate> 
04/01/1992</> 

Если есть лучший способ сделать это, я рад услышать об альтернативах.

+1

Почему бы не просто загрузить его с 'File .ReadAllText'? Кажется, вам не кажется, что это xml. – Blorgbeard

+1

Или вы можете сделать 'XDocument.Load (filename) .ToString()', если вы хотите автоматически отформатировать его – Blorgbeard

ответ

1

Если вы просто хотите отобразить файл в точности так, как он есть, вам не нужно анализировать его как xml. Вы можете просто использовать File.ReadAllText:

textBox1.Text = File.ReadAllText("Employees.xml"); 

В качестве альтернативы, если вы хотите отформатировать его, простой способ запустить его через XDocument, как это:

textBox1.Text = XDocument.Load("Employees.xml").ToString(); 
+0

Blorgbeard, XDocument.Load (filename) .ToString() Сделал трюк. Я не понимал, что это было так просто, я пару раз искал Google, и я не нашел ответов, которые были легко удалены. Огромное спасибо. – user2557462