任务是将CSV文件转换为XML。
var x = from line in File.ReadAllLines(@"d:\sample.txt")
where !line.StartsWith("#") && line.Length>0
let parts=line.Split(',')
select new
{
XmlFile= new XElement("root",
new XElement("ISBN",parts[0]),
new XElement("Title",parts[1])
)
};
问题
1)如何处理流(使用LINQ语句)。
2)如何将选择保存到“sample.xml”文件中?
3)如何将Xml文件绑定到GridView?(我需要使用XmlDataSource吗?)。
4)使用Linq可以为我的XML创建XSD吗? (不使用XSD.exe)。
答案 0 :(得分:2)
1)File.ReadAllLines执行File.Close,因此您不应该遇到流问题。
2)你需要将你的Linq查询放在你的XElement声明中,这样就可以得到一个XElement,而不是IEEumerable的XElement(见下文)
3& 4其他人可以回答...;)
(警告,未经测试的代码):
var xmlFile = new XElement("root",
from line in File.ReadAllLines(@"d:\sample.txt")
where !line.StartsWith("#") && line.Length>0
let parts=line.Split(',')
select new XElement("book",
new XElement("ISBN",parts[0]),
new XElement("Title",parts[1])
)
);
答案 1 :(得分:0)
1)我认为你不需要明确处理流。你有没有发现泄漏? 2)不是使用XMLFile属性创建(anon类型的)对象,而是整理XML元素列表
...
select new XElement("root",
new XElement("ISBN",parts[0]),
new XElement("Title",parts[1])
)
现在,您可以以编程方式创建XmlDocument或父XElement,将列表添加为子元素,并使用上述XML类的成员函数将其保存到文件中。
3)数据绑定:寻找XmlDataProvider MSDN Docs 4)XSD也是XML。所以没有理由你不能以编程方式生成它..虽然我从未尝试过它。除非你正在考虑从你在Step2中创建的xml文件中自动生成模式..在这种情况下我不知道答案..不确定是否有任何工具可以从有效的实现生成正确的格式规范规范。