You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从指定XML节点提取Header内容并赋值给Header类对象?

问题描述

现有如下XML文件:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<MyResponse xmlns="http://mynamespace">
    <Header>
        <FirstName>David</FirstName>
        <LastName>Duchovny</LastName>
    </Header>
    <Filmography>
        <Films>     
        </Films>
        <Series>
            <Serie>
                <Title>X-Files</Title>
                <Year>1989</Year>
            </Serie>
        </Series>

    </Filmography>  
</MyResponse>

需要将其中的Header部分提取至以下Header类对象:

public class Header
{
    public string FirstName { get; set; }

    public string LastName { get; set; }
}

在不使用反序列化的前提下,已编写代码获取到Header节点(变量node对应内容如下):

<Header xmlns="http://mynamespace">
    <FirstName>David</FirstName>
    <LastName>Duchovny</LastName>
</Header>

请问如何将该Header节点的内容提取并赋值给Header类对象?

解决方案

基于已获取的node(Header节点)和已定义的namespaceManager,可以通过以下代码完成赋值:

// 实例化Header对象
var headerObj = new Header();

// 提取FirstName节点内容,需使用命名空间管理器匹配节点
var firstNameNode = node.SelectSingleNode("myApplication:FirstName", namespaceManager);
if (firstNameNode != null)
{
    headerObj.FirstName = firstNameNode.InnerText.Trim();
}

// 提取LastName节点内容
var lastNameNode = node.SelectSingleNode("myApplication:LastName", namespaceManager);
if (lastNameNode != null)
{
    headerObj.LastName = lastNameNode.InnerText.Trim();
}

关键说明

  • 由于XML节点带有指定命名空间http://mynamespace,必须使用之前创建的namespaceManager查找子节点,否则会因命名空间不匹配无法定位目标节点。
  • 使用InnerText获取节点文本内容,搭配Trim()可去除文本前后的换行、空格等无效空白字符。
  • 增加空值判断能避免空引用异常,提升代码的健壮性。

内容的提问来源于stack exchange,提问作者TheBoubou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 23:18:42