XML运用于编程

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

原文地址:https://www.cnblogs.com/akingyao/p/2961570.html