当前位置: 首页 > news >正文

C#解析xml文件

1、示例

<?xml version="1.0" encoding="utf-8" standalone="no"?><DATA><ITEMS><ITEM><ID>01<ID/><CODE>0001<CODE><NAME>测试1<NAME/></ITEM><ITEM><ID>02<ID/><CODE>0002<CODE><NAME>测试2<NAME/></ITEM></ITEMS></DATA>

2、用DataTable存储

private DataTable GetDataTable(string xmlStr, string nodepath)
{
    XmlDocument doc = new XmlDocument();
    doc.LoadXml(xmlStr);

    XmlNodeList xlist = doc.GetElementsByTagName(nodepath);
    DataTable Dt = new DataTable();
    DataRow Dr;
    for (int i = 0; i < xlist.Count; i++)
    {
        Dr = Dt.NewRow();
        XmlElement xe = (XmlElement)xlist.Item(i);
        for (int j = 0; j < xe.Attributes.Count; j++)
        {
            if (!Dt.Columns.Contains(xe.Attributes[j].Name))
                Dt.Columns.Add(xe.Attributes[j].Name);
            Dr[xe.Attributes[j].Name] = xe.Attributes[j].Value;
        }
        for (int j = 0; j < xe.ChildNodes.Count; j++)
        {
            if (!Dt.Columns.Contains(xe.ChildNodes.Item(j).Name))
                Dt.Columns.Add(xe.ChildNodes.Item(j).Name);
            Dr[xe.ChildNodes.Item(j).Name] = xe.ChildNodes.Item(j).InnerText;
        }
        Dt.Rows.Add(Dr);
    }
    return Dt;
}

3、解析

string xmlfile="xml路径";

XmlDocument doc = new XmlDocument();
doc.Load(xmlfile);
string xmlData = doc.InnerXml;
DataTable table = GetDataTable(xmlData, "//ITEM");

if (table != null && table.Rows.Count > 0)

{

for (int i = 0; i < table.Rows.Count; i++)

{

   DataRow row = table.Rows[i];
  string id = row["ID"].ToString();
  string code= row["CODE"].ToString();
  string name= row["NAME"].ToString();

    //将数据逐条存入数据库

   //具体的存储方式根据实际情况编写代码

}

}

相关文章:

  • K8s的kubectl的基本操作
  • C语言中的操作符
  • 二叉树——经典练习题
  • 【Linux-中断】
  • K8S认证|CKA题库+答案| 13. sidecar 代理容器日志
  • Qt中的网络编程(Tcp和Udp)详解 及 实现
  • Gitee的原理及应用详解(二)
  • vue data中的return
  • 使用pyqt绘制一个爱心!
  • C++ 实现深度优先搜索(DFS)的简单示例代码
  • 【OpenCV 基础知识 18】对两图像按位与操作
  • ​​​【收录 Hello 算法】10.4 哈希优化策略
  • C#屏蔽基类成员
  • 【MySQL】库的基础操作
  • v-rep--lua接口和c++接口的关联
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • Babel配置的不完全指南
  • CSS中外联样式表代表的含义
  • C语言笔记(第一章:C语言编程)
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • Git学习与使用心得(1)—— 初始化
  • interface和setter,getter
  • Java 网络编程(2):UDP 的使用
  • js操作时间(持续更新)
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 从零开始在ubuntu上搭建node开发环境
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 那些被忽略的 JavaScript 数组方法细节
  • 数组的操作
  • 为什么要用IPython/Jupyter?
  • 学习ES6 变量的解构赋值
  • 一道面试题引发的“血案”
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • #QT(一种朴素的计算器实现方法)
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (SpringBoot)第二章:Spring创建和使用
  • (补充)IDEA项目结构
  • (苍穹外卖)day03菜品管理
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (计算机网络)物理层
  • (蓝桥杯每日一题)love
  • (每日一问)设计模式:设计模式的原则与分类——如何提升代码质量?
  • (十八)Flink CEP 详解
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .net core 客户端缓存、服务器端响应缓存、服务器内存缓存
  • .NET Project Open Day(2011.11.13)
  • .net SqlSugarHelper
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)
  • .NET 中让 Task 支持带超时的异步等待