XML文件内容如下
<?xml version="1.0" encoding="utf-8" ?> <Tree> <parentNode name="风险问询"> <childNode name="审核" step="1" dataUserRole="税务局干部" roleName="部门负责人"></childNode> <childNode name="审核" step="1" dataUserRole="部门负责人" roleName="分管局长"></childNode> <childNode name="审核" step="1" dataUserRole="分管局长|纪检组长" roleName="县税务局局长"></childNode> <childNode name="审核" step="1" dataUserRole="县税务局局长" roleName="纪检组长"></childNode> </parentNode> <parentNode name="自我监测"> <childNode name="审核" step="1" dataUserRole="税务局干部" roleName="部门负责人"></childNode> <childNode name="审核" step="1" dataUserRole="部门负责人" roleName="分管局长"></childNode> <childNode name="审核" step="1" dataUserRole="分管局长|纪检组长" roleName="县税务局局长"></childNode> <childNode name="审核" step="1" dataUserRole="县税务局局长" roleName="纪检组长"></childNode> </parentNode> <parentNode name="监察意见"> <childNode name="签发" step="1" dataUserRole="" roleName="监审室主任"></childNode> <childNode name="审核" step="2" dataUserRole="" roleName="纪检组长"></childNode> </parentNode> <parentNode name="组织监测"> <childNode name="审核" step="1" dataUserRole="" roleName="监审室主任"></childNode> </parentNode> <parentNode name="信访举报"> <childNode name="审核" step="1" dataUserRole="" roleName="监审室主任"></childNode> </parentNode> <parentNode name="事项监督申报"> <childNode name="审核" step="1" dataUserRole="" roleName="部门管理员"></childNode> </parentNode> <parentNode name="红色预警"> <childNode name="签发" step="0" dataUserRole="税务局干部|部门负责人" roleName="纪检组长"></childNode> <childNode name="审核" step="1" dataUserRole="税务局干部" roleName="部门负责人"></childNode> <childNode name="审核" step="1" dataUserRole="部门负责人" roleName="分管局长"></childNode> <childNode name="审核" step="2" dataUserRole="税务局干部|部门负责人" roleName="纪检组长"></childNode> </parentNode> <parentNode name="黄色预警"> <childNode name="签发" step="0" dataUserRole="税务局干部|部门负责人" roleName="监审室主任"></childNode> <childNode name="审核" step="1" dataUserRole="税务局干部" roleName="部门负责人"></childNode> <childNode name="审核" step="1" dataUserRole="部门负责人" roleName="分管局长"></childNode> </parentNode>
<!--填报步骤可控制,但填报的内容不可更改--> <parentNode name="重大项目招标"> <childNode name="签发" step="1" dataUserRole="支队纪委参与监督人员" roleName="监审室主任"></childNode> <childNode name="审核" step="2" dataUserRole="项目概况填报人" roleName="部门负责人"></childNode> <childNode name="审核" step="3" dataUserRole="项目采购部门填报人" roleName="分管局长"></childNode> <childNode name="签发" step="4" dataUserRole="项目招标领导小组填报人" roleName="监审室主任"></childNode> <childNode name="审核" step="5" dataUserRole="招标小组组长" roleName="部门负责人"></childNode> <childNode name="审核" step="6" dataUserRole="财务部门填报人" roleName="分管局长"></childNode> <childNode name="审核" step="7" dataUserRole="项目审计部门支队领导" roleName="分管局长"></childNode> </parentNode> </Tree>
我们重点对重大项目招标来取流程内的datauserrole并存入List<string>中代码如下:
public static List<string> GetXMLPrejectBiding(string parentNode) { List<string> list = new List<string>(); XmlDocument xml = new XmlDocument(); xml.Load(HttpContext.Current.Server.MapPath("~/Flow.xml")); XmlNode root = xml.SelectSingleNode("Tree"); XmlNodeList rootchild = root.ChildNodes; foreach (XmlNode pa in rootchild) { XmlElement paxe =XmlElement(pa); //将节点转换成XmlElement类型,之后可以取该节点的属性和文本内容
这里注意用(XmlElement paxe =pa as XmlElement;
if(paxe==null){
continue;
}) 这样能通过注释行否则报错
if (paxe.GetAttribute("name") == parentNode) { XmlNodeList xnl = pa.ChildNodes; foreach (XmlNode xnf in xnl) { XmlElement xe = (XmlElement)xnf; list.Add(xe.GetAttribute("dataUserRole"));//显示子节点点文本 } } } return list; }
用linq to xml 如下
XDocument xml = XDocument.Load(HttpContext.Current.Server.MapPath("~/Flow.xml"));
var query =from c in xml.Descendants("Tree")
let d=c.Element("parentNode").Attribute
where d=parentNode
from q in c.Descendants("parentNode")
select q.Attribute("dataUserRole")
重点: XmlNode XmlElement