C# 在数据网格视图C中打印XML数据# C:\ProgramData\base\VLaunch.exe /USERID=acc/USERPASS=abc/ID=ITEM/QUERY D:\ACT\bin\ACTLancher.exe %U%I-应用程序$$PATIENTID$$CT$$RDM\U UID$$ C:\app\LUC\Launcher.exe /USERID=acc/USERPASS=abc/ID=ITEM

C# 在数据网格视图C中打印XML数据# C:\ProgramData\base\VLaunch.exe /USERID=acc/USERPASS=abc/ID=ITEM/QUERY D:\ACT\bin\ACTLancher.exe %U%I-应用程序$$PATIENTID$$CT$$RDM\U UID$$ C:\app\LUC\Launcher.exe /USERID=acc/USERPASS=abc/ID=ITEM,c#,xmlnodelist,C#,Xmlnodelist,我是这个领域的新手,面临着一些问题, 这是一个xml文件,我想在数据网格视图中打印它,我可以在网格中打印item标记的值,但不能在网格中打印path和parameter标记。我尝试使用SelectingsingleNode,但它始终会打印网格中的第一个路径和参数。 我以前使用的代码如下…任何帮助都将不胜感激 <Tools ID="RDM"> <ButtonTool> <Item ID="IS" TYPE=&quo

我是这个领域的新手,面临着一些问题, 这是一个xml文件,我想在数据网格视图中打印它,我可以在网格中打印item标记的值,但不能在网格中打印path和parameter标记。我尝试使用SelectingsingleNode,但它始终会打印网格中的第一个路径和参数。 我以前使用的代码如下…任何帮助都将不胜感激

 <Tools ID="RDM">
  <ButtonTool>
    <Item ID="IS" TYPE="IS" NAME="IS" COLUMN_ID="ID" ORDERNO="UID" />
    <Item ID="CS" TYPE="PROC" NAME="ABC">
      <Path>C:\ProgramData\base\VLaunch.exe</Path>
      <Parameter>/USERID=acc /USERPASS=abc /ID=ITEM /QUERY</Parameter>
    </Item>
    <Item ID="APPLICATION" TYPE="PROC" NAME="XYZ">
      <Path>D:\ACT\bin\ACTLancher.exe</Path>
      <Parameter>%U %I -APPLICATION $$PATIENTID$$ CT $$RDM_UID$$</Parameter>
    </Item>
    <Item ID="REPO" TYPE="PROC" NAME="AAA">
      <Path>C:\app\LUC\Launcher.exe</Path>
      <Parameter>/USERID=acc /USERPASS=abc /ID=ITEM</Parameter>
    </Item>
  </ButtonTool>
</Tools>

XmlNodeList nl=_doc.SelectNodes(“工具/按钮工具/项目”);
对于(int i=0;i
Q:base是什么?如果它是一个自定义类,你能给我们展示一下吗?我不熟悉这个,但我认为它是用来访问GetAttri()的函数,用于从XML中获取节点的属性。我觉得这类似于某些xpath可以解决的问题。当您使用通用名称从文档中选择单个节点时,它将始终找到文档中的第一个节点。使用xpath,您可以在循环时直接指定所需节点的路径。类似于/Item[i]的内容,其中i是for循环编号。如果我使用Item[i]时您不熟悉它,我会从这里开始,它会引发异常。但如果我使用数字代替Item[2],它会起作用,但再次输入新数据时,它仍会显示相同的路径和参数。
   XmlNodeList nl = _doc.SelectNodes("Tools/ButtonTool/Item");
                for (int i = 0; i < nl.Count; i++)
                {
                    string sType = base.Com.GetAttri(nl[i], "TYPE", "");
                    if (sType == "RIS")
                    {
                        _dt.Rows.Add(base.Com.GetAttri(nl[i], "ID", ""),
                                  base.Com.GetAttri(nl[i], "TYPE", ""),
                                  base.Com.GetAttri(nl[i], "NAME", ""),
                                  base.Com.GetAttri(nl[i], "COLUMN_ID", ""),
                                  base.Com.GetAttri(nl[i], "ORDERNO", ""));
                    }
                    else
                    {
                        //for (int j = 0; j < nl.Count; j++)
                        //{
                        XmlNodeList pl = _doc.SelectNodes("Tools/ButtonTool/Item/Path");
                        txtPath.Text = pl.ToString();
                        XmlNode ppl = _doc.SelectSingleNode("Tools/ButtonTool/Item/Parameter");
                        txtUser.Text = ppl.InnerText;
                        //string Path = txtPath.Text;
                        _dt.Rows.Add(base.Com.GetAttri(nl[i], "ID", ""),
                              base.Com.GetAttri(nl[i], "TYPE", ""),
                              base.Com.GetAttri(nl[i], "NAME", ""),
                              base.Com.GetAttri(nl[i], "COLUMN_ID", ""),
                              base.Com.GetAttri(nl[i], "ORDERNO", ""), txtUser.Text, txtPath.Text
                              );
                        //}

                    }