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

AS3/Flash/AIR技术:如何获取复杂XML元素的文本值?

如何获取包含子元素的XML元素的标签间文本值

当XML元素包含子元素时,直接调用toString()这类方法会返回整个元素的所有内容(包括子标签),要仅提取标签间的文本,可通过以下几种方法实现:

方法1:利用XPath定位文本节点

XPath的text()函数可以精准选中元素下的所有文本节点,不受子元素干扰。针对你的场景,假设XML结构为:

<myXML>
  I want this text
  <myChild/>
</myXML>

使用XPath表达式/myXML/text()即可提取目标文本。

Python(xml.etree.ElementTree)

import xml.etree.ElementTree as ET

xml_content = """
<myXML>
  I want this text
  <myChild/>
</myXML>
"""
root = ET.fromstring(xml_content)
# 提取所有直接子文本节点,拼接后去除多余空白
target_text = ''.join(root.itertext()).strip()
print(target_text)

Java(DOM解析)

import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.ByteArrayInputStream;

public class XmlTextExtractor {
    public static void main(String[] args) throws Exception {
        String xml = "<myXML>I want this text<myChild/></myXML>";
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
        
        NodeList childNodes = doc.getElementsByTagName("myXML").item(0).getChildNodes();
        StringBuilder textBuilder = new StringBuilder();
        for (int i = 0; i < childNodes.getLength(); i++) {
            if (childNodes.item(i).getNodeType() == org.w3c.dom.Node.TEXT_NODE) {
                textBuilder.append(childNodes.item(i).getNodeValue().trim());
            }
        }
        System.out.println(textBuilder.toString());
    }
}

方法2:遍历子节点过滤文本

遍历目标元素的所有子节点,仅保留文本类型的节点内容,忽略子元素节点。

JavaScript(浏览器端/Node.js xmldom)

const xmlStr = '<myXML>I want this text<myChild/></myXML>';
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(xmlStr, 'text/xml');
const myXmlElement = xmlDoc.querySelector('myXML');

let resultText = '';
for (const node of myXmlElement.childNodes) {
    if (node.nodeType === Node.TEXT_NODE) {
        resultText += node.textContent.trim();
    }
}
console.log(resultText);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 20:45:33