读取.xml文件
总是感觉很费劲
请xml达人给点代码片段
如下<?xml version="1.0" encoding="gb2312" standalone="yes"?>
<!--流程定义-->
<Process>
<task name="StartTask">
<type>START</type>
<locationX>140</locationX>
<locationY>84</locationY>
<pre_node />
<post_node>AtomicTask_1</post_node>
</task>
<task name="AtomicTask_1">
<type>ATOMIC</type>
<locationX>304</locationX>
<locationY>110</locationY>
<pre_node>StartTask</pre_node>
<post_node>EndTask</post_node>
</task>
<task name="EndTask">
<type>END</type>
<locationX>551</locationX>
<locationY>96</locationY>
<pre_node>AtomicTask_1</pre_node>
<post_node />
</task>
</Process>
总是感觉很费劲
请xml达人给点代码片段
如下<?xml version="1.0" encoding="gb2312" standalone="yes"?>
<!--流程定义-->
<Process>
<task name="StartTask">
<type>START</type>
<locationX>140</locationX>
<locationY>84</locationY>
<pre_node />
<post_node>AtomicTask_1</post_node>
</task>
<task name="AtomicTask_1">
<type>ATOMIC</type>
<locationX>304</locationX>
<locationY>110</locationY>
<pre_node>StartTask</pre_node>
<post_node>EndTask</post_node>
</task>
<task name="EndTask">
<type>END</type>
<locationX>551</locationX>
<locationY>96</locationY>
<pre_node>AtomicTask_1</pre_node>
<post_node />
</task>
</Process>
解决方案 »
- 有一个A窗体,单击其中的按钮弹出B窗体,这时在任务栏上显示的是两个窗体,请问如何能让任务栏上显示的是一个窗体?
- 如何解决下载文件时需要用户名的问题?
- 序列化问题.
- 谁把sqlHelper这个东东反编了,就剩ms sql这块了。提供一下着
- 数据库创建好了 代码也OK 咋么调试的时候显示找不到数据库?
- 我写了一个最最简单的类,为什么就出错了呢??帮帮我,
- tcp协议通信怎样在服务端向与其连接的客户端发送数据
- .NET安装问题
- 这几个命名空间我要到哪里去找
- C#中的运算符有什么?那里有资料亚!特别是关于命名空间的资料!
- 一个winform程序,使用了this.close()为何在后台中还能看到这个进程?
- 怎么获取窗体内所有ContextMenu控件的名字?
具体语法可以参见w3c可以用
XmlNode.SelectSingleNodeXmlNode.SelectNodes
两个方法
看看msdn
<task></task>
的结点读取出来 获得一个结点的数组
再从每个结点读取
<type>
<location>
之类的属性
???????
就可以实现你上面的思想
不信楼主只要用DataSet 打开它后绑定到DataGrid上,你会发现你下面的结点是个DataTable,
type、locationX都是字段,可以直接通过操作table就完成目的了<?xml version="1.0" encoding="gb2312" standalone="yes"?>
<!--流程定义-->
<Process>
<task name="StartTask">
<type>START</type>
<locationX>140</locationX>
<locationY>84</locationY>
<pre_node />
<post_node>AtomicTask_1</post_node>
</task>
<task name="AtomicTask_1">
<type>ATOMIC</type>
<locationX>304</locationX>
<locationY>110</locationY>
<pre_node>StartTask</pre_node>
<post_node>EndTask</post_node>
</task>
<task name="EndTask">
<type>END</type>
<locationX>551</locationX>
<locationY>96</locationY>
<pre_node>AtomicTask_1</pre_node>
<post_node />
</task>
</Process>
<task>
<name>EndTask</name>
<type>END</type>
<locationX>551</locationX>
<locationY>96</locationY>
<pre_node>AtomicTask_1</pre_node>
<post_node />
</task>这样,实际上就是操作task表,想要操作name、type岂不是简单的很
using System.Collections;
using System.IO;
using System.Xml;public class MyClass
{
public static void Main()
{
string xml = @"C:\Inetpub\wwwroot\TestAspx\XML\task.xml";
if( !File.Exists( xml ))
{
throw new Exception("xml文件不存在!");
}
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(xml);
XmlNodeList nodeList;
XmlNodeList nodeListChild;
nodeList = xmlDoc.SelectNodes("/Process/task");
if( nodeList == null )
{
Console.WriteLine("无节点!");
return;
}
foreach(XmlNode xn in nodeList)//遍历所有子节点
{
XmlElement xe=(XmlElement)xn;
Console.WriteLine( xe.GetAttribute("name"));
nodeListChild = xn.ChildNodes;
foreach(XmlNode xnChild in nodeListChild)//遍历所有子节点
{
Console.WriteLine( xnChild.InnerText );
}
Console.WriteLine();
Console.WriteLine( " ********************************** ");
Console.WriteLine();
}
Console.ReadLine();
}
}