仅使用 JavaScript 查找具有给定属性值的 xml 元素的值
Finding the value of an xml element with a given attribute value with JavaScript only
我有一个xml字符串,我需要从仅使用JavaScript中提取值。下面是 xml 字符串的示例:
<RequestVars>
<BuyerCookie>O7CPHFP7AOY</BuyerCookie>
<Extrinsic name="CostCenter">670</Extrinsic>
<Extrinsic name="UniqueName">catalog_tester</Extrinsic>
<Extrinsic name="UserEmail">catalog_tester@mailinator.com</Extrinsic>
</RequestVars>
我需要从中获取电子邮件地址(即 catalog_tester@mailinator.com(。我有一种方法可以为给定的唯一元素提取值,例如使用此函数获取 BuyerCookie 的O7CPHFP7AOY:
function elementValue(xml, elem) {
var begidx;
var endidx;
var retStr;
begidx = xml.indexOf(elem);
if (begidx > 0) {
endidx = xml.indexOf('</', begidx);
if (endidx > 0)
retStr = xml.slice(begidx + elem.length,
endidx);
return retStr;
}
return null;
}
但是现在,我需要一种方法来查找"外部"元素的值,属性"name"的值为"UserEmail"。我已经看到了几种在JQuery中实现此目的的方法,但在JavaScript中却没有。不幸的是,出于我的目的,我只能使用JavaScript。有什么想法吗?
我想
出了一个解决方案。这有点混乱,但它确实很棘手。我输入 xml 的字符串表示形式、我正在寻找的元素标签的名称、属性的名称以及我正在寻找元素值的属性值。
function elementValueByAttribute(xml, elem, attrName, attrValue) {
var startingAt = 1;
var begidx;
var mid1idx;
var mid2idx;
var endidx;
var aName;
var retStr;
var keepGoingFlag = 1;
var count = 0;
while (keepGoingFlag > 0) {
count++;
begidx = xml.indexOf(elem, startingAt);
if (begidx > 0) {
mid1idx = xml.indexOf(attrName, begidx);
if (mid1idx > 0) {
mid2idx = xml.indexOf(">", mid1idx);
if (mid2idx > 0) {
aName = xml.slice(mid1idx + attrName.length + 2, mid2idx - 1);
if (aName == attrValue) {
endidx = xml.indexOf('</', begidx);
if (endidx > 0)
{
retStr = xml.slice(mid2idx + 1, endidx);
}
return retStr;
}
}
}
}
if (startingAt == mid2idx) {
keepGoingFlag = 0;
} else {
startingAt = mid2idx;
}
}
return null;
}
相关文章:
- 锚点元素的href属性自动更改
- 如何使用jquery迭代具有相同属性的html元素并查找onclick事件
- 带有填充属性的SVG矩形显示在包含元素的上方插入框阴影
- 通过id和class属性获取元素
- 如何通过HTML+CSS中的另一个元素Selector更改元素的属性值
- 如何正确引用传递到淘汰中的当前元素的属性.JS
- javascript来显示元素属性
- 自定义HTML元素属性未显示-Web组件
- 如何使用element.myobj.prop等具有对象属性的元素
- 将特定属性动态添加到元素中
- Javascript获取具有不同id的文件数's来自没有多个属性的文件输入元素
- 为什么样式属性不适用于使用DOMParser创建的元素
- .querySelectorAll如何只获取具有所有属性的元素
- 如何使用jQuery按数据日期属性选择元素
- 使用数据属性将HTML数据复制到另一个元素
- JQuery:使用clone()生成的元素不采用原始的事件属性
- 价格滑动过滤器-隐藏父属性元素
- 未捕获的类型错误:不能读取属性'元素不存在
- 将信息存储在变量与数据属性元素中
- 添加HTML5 DATA属性元素存储在Javascript变量