xml 获取节点名称 和指定节点的值

 

string path = Server.MapPath("~/Models");//路径

doc.Load(path + "/CourierCompany.xml");//加载xml

XmlNode rootNode = doc.DocumentElement;

for (int i = 0; i < rootNode.ChildNodes.Count; i++)
{

var name= rootNode.ChildNodes[i].Name;//获取节点名称

var value= rootNode.SelectSingleNode(rootNode.ChildNodes[i].Name).FirstChild.InnerText;//获取指定节点的值

}

 

例子如下;

public JsonResult GetLogisticList()
{

string path = Server.MapPath("~/Models");
//XDocument document = XDocument.Load(path + "/CourierCompany.xml");
//获取到XML的根元素进行操作

List<CourierStatus> couriers = new List<CourierStatus>();
XmlDocument doc = new XmlDocument();

doc.Load(path + "/CourierCompany.xml");
XmlNode rootNode = doc.DocumentElement;
for (int i = 0; i < rootNode.ChildNodes.Count; i++)
{
CourierStatus status = new CourierStatus();
status.Name = rootNode.ChildNodes[i].Name;//获取节点名称
status.VName= rootNode.SelectSingleNode(rootNode.ChildNodes[i].Name).FirstChild.InnerText;//获取指定节点的值
couriers.Add(status);
}
return Json(couriers);
}

public class CourierStatus
{
public string Name { get; set; }
public string VName { get; set; }
}

xml文件内容

<couriers>
<SF>顺丰速运</SF>
<HTKY>百世快递</HTKY>
<ZTO>中通快递</ZTO>
<STO>申通快递</STO>
<YTO>圆通速递</YTO>
<YD>韵达速递</YD>
<YZPY>邮政快递包裹</YZPY>
<EMS>EMS</EMS>
<HHTT>天天快递</HHTT>
<JD>京东物流</JD>
<QFKD>全峰快递</QFKD>
<GTO>国通快递</GTO>
<UC>优速快递</UC>
<DBL>德邦</DBL>
<FAST>快捷快递</FAST>
<ZJS>宅急送</ZJS>
</couriers>

请求结果:

[
{
"Name": "SF",
"VName": "顺丰速运"
},
{
"Name": "HTKY",
"VName": "百世快递"
},
{
"Name": "ZTO",
"VName": "中通快递"
},
{
"Name": "STO",
"VName": "申通快递"
},
{
"Name": "YTO",
"VName": "圆通速递"
},
{
"Name": "YD",
"VName": "韵达速递"
},
{
"Name": "YZPY",
"VName": "邮政快递包裹"
},
{
"Name": "EMS",
"VName": "EMS"
},
{
"Name": "HHTT",
"VName": "天天快递"
},
{
"Name": "JD",
"VName": "京东物流"
},
{
"Name": "QFKD",
"VName": "全峰快递"
},
{
"Name": "GTO",
"VName": "国通快递"
},
{
"Name": "UC",
"VName": "优速快递"
},
{
"Name": "DBL",
"VName": "德邦"
},
{
"Name": "FAST",
"VName": "快捷快递"
},
{
"Name": "ZJS",
"VName": "宅急送"
}
]

不当之处; 请指教

posted @   你小子嚣张呀  阅读(4832)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示