【C#】NXOpen将树列表内数据写入XML文件

下面方法为面向过程的方式,在C#中应该优先使用序列化的方式操作XML文件

1. 当前方式为加载对应的XML文件,清空指定节点下的XmlElement,然后再重新创建XmlElement,并设置属性。

目标文件
<?xml version="1.0"?>
<Root WorkLayer="1">
  <PartCategory Name="Category1" LocalName="类别1" Layer="2~5" Ico="" Remarks="" Sensibility="0" />
  <PartCategory Name="Category2" LocalName="类别2" Layer="15" Ico="" Remarks="" Sensibility="0" />
  <PartCategory Name="Category3" LocalName="类别3" Layer="20" Ico="" Remarks="" Sensibility="0" />
  <PartCategory Name="Category4" LocalName="类别4" Layer="30~50" Ico="" Remarks="" Sensibility="0" />
</Root>
写入XML文件代码
        /// <summary>
        /// 获取树列表内所有节点
        /// </summary>
        /// <returns></returns>
        private List<Node> SelectAllNodes()
        {
            List<Node> nodes=new List<Node>();
            var node = tree_control0.RootNode;
            while (node!=null)
            {
                nodes.Add(node);
                node = node.NextNode;
            }
            return nodes;
        }

        /// <summary>
        /// 写入数据到XML文件
        /// </summary>
        /// <param name="nodes">树列表的List<nodes></param>
        public void WriteXMLFile(List<Node> nodes)
        {
            XmlDocument xmldoc = new XmlDocument();
            string path = AskTemplateDir();
            xmldoc.Load(path);
            if (xmldoc.DocumentElement != null) xmldoc.DocumentElement.InnerText = null;//忽略注释
            XmlNode root = xmldoc.SelectSingleNode("Root");
            root.InnerText = null;//清除节点内的所有数据
            foreach (var node in nodes)
            {
                string name01 = node.GetColumnDisplayText(name);
                string localName01 = node.GetColumnDisplayText(localName);
                string layer01 = node.GetColumnDisplayText(layer);
                XmlElement holeElement = xmldoc.CreateElement("PartCategory");//创建一个<DrillSizeHole/>节点
                holeElement.SetAttribute("Name", name01);
                holeElement.SetAttribute("LocalName", localName01);
                holeElement.SetAttribute("Layer", layer01);
                holeElement.SetAttribute("Ico", "");
                holeElement.SetAttribute("Remarks", "");
                holeElement.SetAttribute("Sensibility", "0");
                root.AppendChild(holeElement);//将节点<DrillSizeHole/>写入<Root>根节点
            }
            xmldoc.Save(path);
        }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值