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

如何用JavaScript读取HTML中带命名空间的嵌入式XML的s:Schema属性值

实现方法

要读取嵌入式XML中<s:Schema>的id和table属性,可按以下步骤用JavaScript实现:

步骤1:获取XML内容

先通过DOM选择器定位到嵌入XML的<script>元素,提取其文本内容:

const xmlScript = document.getElementById('data');
const xmlContent = xmlScript.textContent;

步骤2:解析XML字符串为DOM文档

使用DOMParser将XML字符串转换为可操作的XML文档对象:

const parser = new DOMParser();
const xmlDoc = parser.parseFromString(xmlContent, 'application/xml');

步骤3:定位带命名空间的<s:Schema>元素

注意<s:Schema>对应的命名空间URI是xmlns:s="0",必须用命名空间匹配的方法查找元素,getElementsByTagNameNS是兼容性最稳定的方式:

// 第一个参数是命名空间URI,第二个是元素本地名(不带前缀s:)
const schemaElement = xmlDoc.getElementsByTagNameNS('0', 'Schema')[0];

步骤4:读取目标属性

从找到的元素中直接提取id和table属性值:

const schemaId = schemaElement.getAttribute('id');
const schemaTable = schemaElement.getAttribute('table');

// 示例输出
console.log('Schema id:', schemaId); // 输出 RowsetSchema
console.log('Schema table:', schemaTable); // 输出 ARTICLE

完整可运行代码

document.addEventListener('DOMContentLoaded', () => {
  // 获取XML内容
  const xmlScript = document.getElementById('data');
  const xmlContent = xmlScript.textContent;

  // 解析XML
  const parser = new DOMParser();
  const xmlDoc = parser.parseFromString(xmlContent, 'application/xml');

  // 查找Schema元素
  const schemaElement = xmlDoc.getElementsByTagNameNS('0', 'Schema')[0];

  if (schemaElement) {
    const schemaId = schemaElement.getAttribute('id');
    const schemaTable = schemaElement.getAttribute('table');
    console.log('Schema id:', schemaId);
    console.log('Schema table:', schemaTable);
  } else {
    console.error('未找到<s:Schema>元素');
  }
});

关键注意点

  • 不能直接用getElementsByTagName('s:Schema')查找,XML命名空间的匹配核心是URI而非前缀,必须用命名空间专属方法。
  • 命名空间URI对应xmlns:s="0"中的0,而非前缀s,这是XML命名空间的基础规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 02:06:31