我正在尝试从以下类型的字符串数组中获取字符串数据,其中Tag等于“UNSORTED”
"<UNSORTED><NAME_NO>999</NAME_NO></UNSORTED> <OTHER ID="075">OTHER</OTHER>"
"<UNSORTED><LASTNAME_NO>999</LASTNAME_NO></UNSORTED> <UNSORTED><TOWN_NO>1000</TOWN_NO></UNSORTED>"
在第一个例子中我想提取999
在第二个例子中我想提取999和1000
知道如何在Javascript中执行此操作吗?
答案 0 :(得分:1)
您可以使用正则表达式,例如
var name = x.match(/<name_no>(\d+)<\/name_no>/i);
var town = y.match(/<town_no>(\d+)<\/town_no>/i);
答案 1 :(得分:0)
答案 2 :(得分:0)
由于这是XML,您可以使用document.implementation和XPath来使用内存中的文档:
var str = '<UNSORTED><LASTNAME_NO>999</LASTNAME_NO></UNSORTED> <UNSORTED><TOWN_NO>1000</TOWN_NO></UNSORTED>';
// create a document in memory
var doc = document.implementation.createDocument('','');
// create a dummy node to store str in and add to our document
var root = doc.createElement('root');
root.innerHTML = str;
doc.appendChild(root);
// run xpath to find all the children of <UNSORTED> nodes
var unsorteds = doc.evaluate( '//UNSORTED/*', doc, null, XPathResult.ANY_TYPE, null );
// iterate through the matches and build results
var res, results = [];
while (res = unsorteds.iterateNext()) {
// optionally ingore blank tags
if(res.textContent.trim().length > 0) {
// add the textContent of the node to the results array
results.push(res.textContent);
}
}
// log results
document.getElementById('result').innerHTML = results.join('\n');
&#13;
<textarea id="result" rows="5" cols="30"></textarea>
&#13;
答案 3 :(得分:0)
您可以通过匹配UNSORTED
以_NO
结尾的任何孩子来完成此操作。这样,您可以拥有任何标签名称:
var results = [];
$("UNSORTED").children().filter(function(){
return (/.+_NO/.test(this.tagName));
}).each(function(){
results.push($(this).text());
});
console.log(results); // ["999", "999", "1000"]