好吧,我有一个小问题,阅读我公司的臭名昭着的畸形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