爲初學者在C#中:我用Google搜索周圍,但在一個「簡單問題」迷路了:讀取XML,排序上的屬性,並寫入文本文件c#
Read a XML :
<persons> this is sample
<person id="0">
<Lname>Johnson</Lname>
<Fname>Molly</Fname>
</person>
<person id="1">
<Lname>buffalo</Lname>
<Fname>Mike</Fname>
</person>
<person id="2">
<Lname>COOLS</Lname>
<Fname>WALTER</Fname>
</person>
<person id="3">
<Lname>FROMUS</Lname>
<Fname>LUDOVICUS</Fname>
</persons>
我需要梳理了lname(姓氏)和Fname(名字)
並且在文本文件(txt)中列表爲 有
EG喲看到2人有約克的Lname,然後排序Fname。
Case John
Buffalo Mike
York Theo
York Viviane
lname和Fname應該在同一行上,但爲下一個Lname,Fname換一個新行。
那不是在這個問題上,因爲語法問題,這個工具(對不起)
其他信息在這裏:我嘗試使用的foreach使用var指令列出了,但得到了混亂。 目標是儘可能地使用例如LINQ和OO(面向對象)。
非常感謝
我的意見的迴應:
首先我想爲badformed XML -the最後的標籤有一個錯誤/符號道歉。 語言確實是荷蘭語(荷蘭) - 我將標籤名稱改爲英文。
我已經擁有的是閱讀XML文件並對屬性「id」進行排序並寫入平面文件。然後我試圖通過使用orderedby行使「的foreach VAR結構,使之更加OO
代碼我現在有。
using System;
using System.Collections.Generic;
using System.Xml.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ComponentModel;
using System.Data;
using System.IO;
using System.Xml;
using System.Net;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
XmlReader reader = XmlReader.Create("c:/download/test.xml");
List<string> Collectperson = new List<string>();
Collectperson.Clear();
string personid = "";
string nm = "";
string vn = "";
string oneline = "";
while (reader.Read())
{
if (reader.NodeType != XmlNodeType.EndElement)
{
// Get element name and switch on it.
switch (reader.Name)
{
case "persoon":
// Detect this element.
// initialize collectperson
Collectperson.Clear();
Console.WriteLine(" " + reader.GetAttribute(0));
Collectperson.Add(reader.GetAttribute(0));
// add to file ans reinitialize string
oneline = "";
oneline = string.Join(" ", Collectperson.ToArray());
break;
//
case "naam":
if (reader.Read())
{
Console.WriteLine(reader.Value);
nm = reader.Value;
Collectperson.Add(nm);
oneline = string.Join(" ", Collectperson.ToArray());
}
break;
case "voornaam":
if (reader.Read())
{
Console.WriteLine(reader.Value);
vn = reader.Value;
Collectperson.Add(vn);
oneline = string.Join(" ", Collectperson.ToArray());
// ==================================================================================
string path = @"c:/download/personen.txt";
// This text is added only once to the file.
if (!File.Exists(path))
{
// Create a file to write to.
using (StreamWriter sw = File.CreateText(path))
{
sw.WriteLine(oneline);
}
}
// This text is always added, making the file longer over time
// if it is not deleted.
using (StreamWriter sw = File.AppendText(path))
{
sw.WriteLine(oneline);
}
//==================================================================================
}
break;
} // switch
}
} // while
}
}
}
讓我們看看你已經嘗試什麼,爲什麼* *你覺得自己 「搞砸得到了。」這聽起來像你有三個問題:如何讀取XML,如何排序,以及如何寫入文本文件。你試過把它分解嗎? – 2014-09-12 13:40:24
該xml無效。你的結尾'personen'標記不正確,並且'persoon id =「3」'沒有結束標記。 – gunr2171 2014-09-12 13:45:31
1.標點符號和拼寫是展示您付出一些努力的好方法。 2.分手(閱讀XML,排序,寫),然後尋找個別問題的答案。這些問題之前已經詢問過,不難發現 – Peter 2014-09-12 13:45:47