XML文字节点是什么 如何获取元素的文本内容
技术百科
畫卷琴夢
发布时间:2026-01-21
浏览: 次 XML文字节点是元素标签间未被子元素包裹的纯文本内容,nodeType为3;textContent递归提取所有文本并拼接,最常用;childNodes配合nodeType===3可精确筛选直接子级文字节点。
XML文字节点就是元素内部的纯文本内容
XML 中的 #text 节点(常称“文字节点”)指元素开始标签与结束标签之间、未被子元素包裹的原始字符串。它不是标签,不带属性,也不参与结构嵌套——只是字符数据本身。比如 里的 Alice 就是一个文字节点;而 中, 元素下其实没有直接的文字节点,只有子元素 。
用 textContent 获取元素全部文本内容(最常用)
textContent 是 DOM API 中最直接的方式,它递归提取目标元素及其所有后代中的所有文本节点内容,并拼接成一个字符串,自动忽略标签和空白换行(但保留元素内原有的空格和制表符)。
const nameEl = document.querySelector('name');
console.log(nameEl.textContent); // 输出 "Alice"
- 适用于绝大多数 HTML/XML 解析场景(如浏览器中解析 XML 文档或 XML 字符串)
- 会跳过注释节点和 CDATA 节点,只取文本节点
- 如果元素含多个子文本节点(比如中间有注释或换行),
textContent仍能合并返回完整文本 - 注意:在 XML 文档中若使用
DOMParser解析,该属性行为一致,但需确保文档加载完成后再访问
用 childNodes + nodeType === 3 精确筛选文字节点
当需要区分“直接子级文字节点”和其他类型节点(如元素、注释)时,childNodes 更底层可控。文字节点的 nodeType 值恒为 3,可据此过滤。
const nameEl = document.querySelector('name');
const textNodes = Array.from(nameEl.childNodes).filter(node => node.nodeType === 3);
const rawText = textNodes.map(n => n.nodeValue.trim()).join('');
console.log(rawText); // 输出 "Alice"
- 适合调试或处理混合内容(如
中只想取开头的Hello world!
Hello) -
nodeValue返回原始值(含前后空白),通常要配合trim() - 容易漏掉隐藏的空白文本节点:XML/HTML 换行缩进也会生成
#text节点,比如会产生三个子节点(换行、文本、换行)\n Alice\n
innerText 和 innerHTML 不适合 XML 文本提取
innerText 依赖渲染样式,只返回“用户可见”的文本,在 XML 文档(无 CSS 渲染)中行为不可靠,且在非浏览器环境(如 Node.js)根本不可用;innerHTML 返回的是序列化的 HTML 字符串,对 XML 元素会报错或返回空,因为它只认 HTML 上下文。
- 在 XML DOM 中调
用
innerText可能返回空字符串或undefined -
innerHTML在 XML 文档上通常不可读(抛出DOMException或静默失败) - 不要试图用正则从 XML 字符串里“匹配文本”,会因嵌套、转义、CDATA 等崩溃
# 浏览器
# css
# js
# 递归
# html
# 字节
# xml
# 字符串
# node
# node.js
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- MySQL 中使用 IF 和 CASE 实现查询字
- 如何使用Golang实现云原生应用弹性伸缩_自动应
- 如何在Golang中使用container/hea
- Windows任务计划服务异常原因_任务调度失败的
- PHP怎么接收URL中的锚点参数_获取#后面参数值
- Windows服务持续崩溃怎样修复_系统服务保护机
- Mac怎么进行语音输入_Mac听写功能设置与使用【
- Mac如何整理桌面文件_Mac使用堆栈功能一键整理
- 如何使用 Python 合并文件夹内多个 Exce
- php下载安装包怎么选_threadsafe与nt
- 如何使用Golang安装API文档生成工具_快速生
- Win11怎么关闭系统声音_Win11系统提示音静
- Python集合操作技巧_高效去重解析【教程】
- 如何使用Golang实现Web表单数据绑定_自动映
- Win11如何设置开机问候语 Win11修改登录界
- c++中如何求一个数的平方根_c++ sqrt函数
- Win11怎么更改输入法顺序_Win11调整语言首
- 如何使用 Selenium 正确获取篮球参考网站球
- Python安全爬虫设计_IP代理池与验证码识别策
- Python文件管理规范_工程实践说明【指导】
- Win11怎么恢复出厂设置_Win11重置此电脑保
- Windows11怎样开启游戏模式_Windows
- 网站内页做seo排名怎么做?
- mac怎么安装字体_MAC添加第三方字体与字体册管
- Win11怎么关闭通知中心_Windows11系统
- 如何用正则与预处理高效拦截带干扰符的恶意域名
- windows 10应用商店区域怎么改_windo
- Windows10如何更改盘符名称_Win10重命
- php打包exe如何加密代码_防反编译保护方法【技
- php中$this和::能混用吗_对象与静态作用域
- 如何在Golang中配置代码格式化工具_使用gof
- LINUX怎么设置系统语言_LINUX修改中文环境
- Python异步网络编程_aiohttp说明【指导
- Win11怎么设置桌面图标间距_Windows11
- mac怎么右键_MAC鼠标右键设置与触控板手势技巧
- Windows电脑键盘突然失灵怎么办?(驱动与硬件
- 如何使用Golang构建基础消息队列模拟_Gola
- Win11任务栏怎么放到顶部_Win11修改任务栏
- Windows电脑如何进入安全模式?(多种按键方法
- Win11关机快捷键是什么_Win11快速关机方法
- Win11怎么设置默认输入法 Win11固定中文输
- PythonFastAPI项目实战教程_API接口
- 如何使用Golang反射将map转换为struct
- Win10如何关闭安全中心所有通知 Win10禁用
- windows系统找不到无线网络怎么办_windo
- php8.4匿名类怎么用_php8.4匿名类创建与
- php嵌入式需要什么环境_搭建php+linux嵌
- 如何在Golang中使用replace替换模块_指
- php能控制zigbee模块吗_php通过串口与c
- Windows10任务栏图标变成白色文件_Win1


QQ客服