好吧,我有一個小問題,閱讀我公司的臭名昭着的畸形XML文件之一。C#讀取標籤內部的XML(內部?)
嘗試從中獲取5個值並將它們單獨保存爲變量。
下面是一個棘手的XML示例。
(我可能沒有使用正確的術語,但我無法找到這種類型的閱讀價值的任何東西)
<ONE>
<TWO>
<THREE>
</THREE>
</TWO>
<DATA internalid="1" externalid="2" lastname="lname" firstname="name" date="20.03.2003"/>
</ONE>
所以,我需要的數據是internalid,外部ID,姓氏,名字和日期。
到目前爲止,我一直在努力工作,無法做出任何事情。
string xml = (@"C:\1.xml");
var xmlElement = XElement.Load(xml);
var xmlList = (from message in xmlElement.Elements("DATA")
select new
{
internalid = message.Attribute("internalid").Value,
externalid = message.Attribute("externalid").Value,
lastname = message.Attribute("lastname").Value,
firstname = message.Attribute("firstname").Value,
date = message.Attribute("date").Value
}).ToString();
而且我無法讓它飛起來。這並不是說我得到任何錯誤,但是當我走出這個字符串到一個RichTextBox或只是文本我得到這個....
System.Linq.Enumerable + WhereSelectEnumerableIterator
2[System.Xml.Linq.XElement,<>f__AnonymousType0
5 System.String,系統。字符串,System.String,System.String,System.String]]
此外,所以我可以更好地研究這個問題,當數據是INSIDE標籤時,它是什麼叫做?
謝謝你們!
嗯,是的,你在序列上調用'ToString()'。你期望結果是什麼,爲什麼?這對我來說完全不像一個XML問題。此外,請更多關注帖子中代碼的格式 - 不需要所有縮進。 –
您應該將方法'ToString()'直接應用於XElement對象,或者創建自定義類型,而不是使用帶有overriden ToString的匿名類。但無論如何,你會得到enumerable作爲你的linq查詢的輸出。你可以應用類似'String.Join(linqResult.Select(x => x.ToString()))' –
現在明白了,從ToString切換到ToList ....有一個很好的輸出。它的工作原理。現在正致力於將此列表變爲單個字符串或變量...... – Redracer68