<title>路由型与交换型互联网基础</title><author>程庆梅</author><price>27.00</price>
<title>计算机硬件技术基础</title><author>李继灿</author><price>25.00</price>
<title>软件质量保证与管理</title><author>朱少民</author><price>39.00</price>
<title>算法设计与分析</title><author>王红梅</author><price>23.00</price>
请教各位老师,C#如何对这样的文件进行读写操作?
16 个解决方案
#1
这样也可以 读了。
#2
使用linq to xml 或者直接读取成字符串
#3
这种直接读字符串然后正则吧
#4
#5
没有更好的办法了吗?
#6
static void LoadXml()
{
string txt = @"<title>路由型与交换型互联网基础</title><author>程庆梅</author><price>27.00</price>
<title>计算机硬件技术基础</title><author>李继灿</author><price>25.00</price>
<title>软件质量保证与管理</title><author>朱少民</author><price>39.00</price>
<title>算法设计与分析</title><author>王红梅</author><price>23.00</price>";
XElement root = XElement.Parse("<root>" + txt + "</root>");
foreach(var ele in root.Elements())
{
Console.WriteLine(ele.Value);
}
}
#7
非常感谢!那怎么写入呢?要求不能包含节点。
#8
static void LoadXml()
{
string txt = @"<title>路由型与交换型互联网基础</title><author>程庆梅</author><price>27.00</price>
<title>计算机硬件技术基础</title><author>李继灿</author><price>25.00</price>
<title>软件质量保证与管理</title><author>朱少民</author><price>39.00</price>
<title>算法设计与分析</title><author>王红梅</author><price>23.00</price>";
string xml = "<root>" + txt + "</root>";
XElement root = XElement.Parse(xml);
foreach (var ele in root.Elements())
{//读取
Console.WriteLine(ele.Value);
}
Console.WriteLine("#######################");
root.Add(new XElement("title", "测试新增"));//写
Console.WriteLine(Regex.Replace(root.ToString(), @"[\n\r]*</?root>[\n\r]*", string.Empty));
}
#9
#10
缺少什么补下就可以了. 处理完成后,再把补的去掉.
#11
非常感谢starfd!
原谅我的无知,怎么按照每次一条记录的方式读取?您提供的方式是每次一个字段,处理起来似乎比较麻烦。
另外,能否使用XmlTextReader读取呢?因为我的数据文件比较大,采取字符串的方式效率会低一些。
原谅我的无知,怎么按照每次一条记录的方式读取?您提供的方式是每次一个字段,处理起来似乎比较麻烦。
另外,能否使用XmlTextReader读取呢?因为我的数据文件比较大,采取字符串的方式效率会低一些。
#12
csdn学院的课吗?便宜
#13
哪位大侠能否明确告知,这种格式能否使用XmlTextReader读取呢?
#14
这种格式能否使用XmlTextReader读取呢?
答案是否定的!
因为你缺少根节点,所以根本不是 XML 文档
即便是配上根节点,XmlTextReader 也不会将 title、author、price 成组处理,因为还缺少了他们的父级节点
但是你可以这样处理:
每次从文件中读取一行
对读的的数据做 XElement.Parse("<root>" + txt + "</root>")
这样就得到了含有 title、author、price 三个成员的 XElement
这个过程和 XmlTextReader 的实际工作过程是一致的
答案是否定的!
因为你缺少根节点,所以根本不是 XML 文档
即便是配上根节点,XmlTextReader 也不会将 title、author、price 成组处理,因为还缺少了他们的父级节点
但是你可以这样处理:
每次从文件中读取一行
对读的的数据做 XElement.Parse("<root>" + txt + "</root>")
这样就得到了含有 title、author、price 三个成员的 XElement
这个过程和 XmlTextReader 的实际工作过程是一致的
#15
既然用XML又不按照规则,楼主这种设计确实是自找麻烦, XML是按照文本形式存储的数据,如果太大就不太适合了,何况还是这种畸形格式.
#16
这是东软开发某款软件的数据交换文件结构,不是我想这么设计,东软可是一间大公司,可不要说你没听说过吆?
#1
这样也可以 读了。
#2
使用linq to xml 或者直接读取成字符串
#3
这种直接读字符串然后正则吧
#4
#5
没有更好的办法了吗?
#6
static void LoadXml()
{
string txt = @"<title>路由型与交换型互联网基础</title><author>程庆梅</author><price>27.00</price>
<title>计算机硬件技术基础</title><author>李继灿</author><price>25.00</price>
<title>软件质量保证与管理</title><author>朱少民</author><price>39.00</price>
<title>算法设计与分析</title><author>王红梅</author><price>23.00</price>";
XElement root = XElement.Parse("<root>" + txt + "</root>");
foreach(var ele in root.Elements())
{
Console.WriteLine(ele.Value);
}
}
#7
非常感谢!那怎么写入呢?要求不能包含节点。
#8
static void LoadXml()
{
string txt = @"<title>路由型与交换型互联网基础</title><author>程庆梅</author><price>27.00</price>
<title>计算机硬件技术基础</title><author>李继灿</author><price>25.00</price>
<title>软件质量保证与管理</title><author>朱少民</author><price>39.00</price>
<title>算法设计与分析</title><author>王红梅</author><price>23.00</price>";
string xml = "<root>" + txt + "</root>";
XElement root = XElement.Parse(xml);
foreach (var ele in root.Elements())
{//读取
Console.WriteLine(ele.Value);
}
Console.WriteLine("#######################");
root.Add(new XElement("title", "测试新增"));//写
Console.WriteLine(Regex.Replace(root.ToString(), @"[\n\r]*</?root>[\n\r]*", string.Empty));
}
#9
#10
缺少什么补下就可以了. 处理完成后,再把补的去掉.
#11
非常感谢starfd!
原谅我的无知,怎么按照每次一条记录的方式读取?您提供的方式是每次一个字段,处理起来似乎比较麻烦。
另外,能否使用XmlTextReader读取呢?因为我的数据文件比较大,采取字符串的方式效率会低一些。
原谅我的无知,怎么按照每次一条记录的方式读取?您提供的方式是每次一个字段,处理起来似乎比较麻烦。
另外,能否使用XmlTextReader读取呢?因为我的数据文件比较大,采取字符串的方式效率会低一些。
#12
csdn学院的课吗?便宜
#13
哪位大侠能否明确告知,这种格式能否使用XmlTextReader读取呢?
#14
这种格式能否使用XmlTextReader读取呢?
答案是否定的!
因为你缺少根节点,所以根本不是 XML 文档
即便是配上根节点,XmlTextReader 也不会将 title、author、price 成组处理,因为还缺少了他们的父级节点
但是你可以这样处理:
每次从文件中读取一行
对读的的数据做 XElement.Parse("<root>" + txt + "</root>")
这样就得到了含有 title、author、price 三个成员的 XElement
这个过程和 XmlTextReader 的实际工作过程是一致的
答案是否定的!
因为你缺少根节点,所以根本不是 XML 文档
即便是配上根节点,XmlTextReader 也不会将 title、author、price 成组处理,因为还缺少了他们的父级节点
但是你可以这样处理:
每次从文件中读取一行
对读的的数据做 XElement.Parse("<root>" + txt + "</root>")
这样就得到了含有 title、author、price 三个成员的 XElement
这个过程和 XmlTextReader 的实际工作过程是一致的
#15
既然用XML又不按照规则,楼主这种设计确实是自找麻烦, XML是按照文本形式存储的数据,如果太大就不太适合了,何况还是这种畸形格式.
#16
这是东软开发某款软件的数据交换文件结构,不是我想这么设计,东软可是一间大公司,可不要说你没听说过吆?