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

如何用JavaScript提取嵌套XML中指定文本的Button元素的bounds属性

提取Android布局XML中指定文本按钮的bounds属性的JavaScript实现方法

你用jsdom匹配不到元素的核心原因是:jsdom是为HTML DOM设计的,而Android布局是XML格式,标签名里的点号(比如android.widget.Button)会被jsdom当成HTML的类选择器语法解析,而非完整的标签名,所以querySelectorAll("android.widget.button")实际是在找标签为<android>且带有widget、button类的元素,自然匹配不到目标按钮。

下面提供两种可行的实现方式:

方法一:使用XML专用解析器(推荐)

Node.js环境可以用xmldom库(专门处理XML的DOM解析),步骤如下:

  1. 安装依赖:
npm install xmldom
  1. 编写解析代码:
const { DOMParser } = require('xmldom');

// 替换为你的Android布局XML字符串
const xstr = '<your-android-layout-xml>';

const parser = new DOMParser();
const xmlDoc = parser.parseFromString(xstr, 'text/xml');

// 获取所有按钮元素(注意Android布局中标签名通常是首字母大写的Button,根据实际XML调整)
const buttons = xmlDoc.getElementsByTagName('android.widget.Button');

let targetBounds = '';
// 遍历按钮匹配目标文本
for (const button of buttons) {
  const buttonText = button.getAttribute('text');
  if (buttonText === 'Allow' || buttonText === 'Don’t allow') {
    targetBounds = button.getAttribute('bounds');
    break;
  }
}

console.log(targetBounds); // 输出预期的bounds值,如[177,1556][1263,1752]

方法二:正则表达式匹配(适合简单场景)

如果你的XML结构比较固定,也可以直接用正则快速提取,无需额外依赖:

const xstr = '<your-android-layout-xml>';

// 正则匹配text为Allow/Don’t allow的button元素的bounds属性
const regexPattern = /<android\.widget\.(?:Button|button)[^>]*text="(Allow|Don’t allow)"[^>]*bounds="([^"]+)"/i;
const matchResult = xstr.match(regexPattern);

if (matchResult) {
  console.log(matchResult[2]); // 输出目标bounds值
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 00:31:14