我有一個.txt文件,我想用c#將它轉換成.xml文件。 txt文件看起來像如何將文本文件轉換爲XML
a/b/c
a/b
a/b/c/d
e
OUTPUT:
<root>
<a>
<b>
<c>
<d></d>
</c>
</b>
<a>
<a>
<b>
<c></c>
</b>
</a>
<a>
<b></b>
</a>
<e>
</root>
可以指示?
我有一個.txt文件,我想用c#將它轉換成.xml文件。 txt文件看起來像如何將文本文件轉換爲XML
a/b/c
a/b
a/b/c/d
e
OUTPUT:
<root>
<a>
<b>
<c>
<d></d>
</c>
</b>
<a>
<a>
<b>
<c></c>
</b>
</a>
<a>
<b></b>
</a>
<e>
</root>
可以指示?
如果字母后的下一個字符是斜線,則在當前標籤內部的斜槓後面加上字符。另外關閉當前標籤。
你應該學習數組和索引。
使用File.ReadAllLines方法可以將整個文本文件加載到字符串數組中(一行=數組中的一個字符串)。
忽略我上面的評論強調了排序問題,這裏的(樂趣)一個襯墊:
XDocument doc = new XDocument(
new XElement("root",
Regex
.Split(input, @"\r?\n")
.Select(line => line.Split('/')
.Reverse()
.Aggregate((XElement)null,
(prev,curr) =>
new XElement(curr, prev)))));
則... How can I save the XML contents of an XDocument as an .xml file?
我只是忽視的事實是順序的XML文件不符合你的txt文件的順序。 T爲你的文件寫一個解析器,你必須用新的行符號(Environment.NewLine或「\ n」)和「/」來分割你的字符串,然後把這些字母放在一個堆棧中,並將它們寫入你的需要一次封裝一個。
在結果數組周圍放置一個while循環並將其設置爲您使用新行分割創建的數組長度。爲每一行創建另一個循環來分割符號並將它們放在堆棧中。
將符號放在堆棧上時,用「<」+符號+「>」將其寫入文件。你已經把堆棧的每一個符號後,你只需要戳破這些符號寫入文件「」
斯普利特:C# Split A String By Another String
也許當我有時間的話,我就寫一些代碼,但是這應該給你一個大概的想法。
我認爲解決這個最簡單的方法是一個遞歸方法
方法:
public static string GetXML(IEnumerable<string> Items)
{
if (Items.Any())
{
return string.Format("<{0}>{1}</{0}>", Items.First(), GetXML(Items.Skip(1)));
}
else
{
return string.Empty;
}
}
電話:
StringBuilder sbResult = new StringBuilder("<root>");
foreach (string Line in File.ReadAllLines(@"d:\sample.txt"))
{
sbResult.Append(GetXML(Line.Split('/')));
}
sbResult.Append("</root>");
你嘗試過什麼?訂單怎麼樣? XML和源數據的排序是不同的。爲什麼?這個訂單是如何派生的? – spender
''是無效的XML - 它應該是' '或' ' –
fubo
是,節點E應爲 –
Optimus