获取数组中字符串的一部分
get a part of a string in an array
我目前正在使用nodejs,我有一个函数可以返回一个body(String),如下所示:
<resourceDescriptors>
<resourceDescriptor name="AllAccounts" wsType="reportUnit" uriString="/reports/samples/AllAccounts" isNew="false">
<label><![CDATA[Accounts Report]]></label>
<description><![CDATA[All Accounts Report]]></description>
<creationDate>1328803684197</creationDate>
<resourceProperty name="PROP_RESOURCE_TYPE">
<value><![CDATA[com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.ReportUnit]]></value>
</resourceProperty>
<resourceProperty name="PROP_PARENT_FOLDER">
<value><![CDATA[/reports/samples]]></value>
</resourceProperty>
<resourceProperty name="PROP_VERSION">
<value><![CDATA[0]]></value>
</resourceProperty>
<resourceProperty name="PROP_RU_ALWAYS_PROPMT_CONTROLS">
<value><![CDATA[false]]></value>
</resourceProperty>
<resourceProperty name="PROP_RU_CONTROLS_LAYOUT">
<value><![CDATA[1]]></value>
</resourceProperty>
</resourceDescriptor>
<resourceDescriptor name="Cascading_multi_select_report" wsType="reportUnit" uriString="/reports/samples/Cascading_multi_select_report" isNew="false">
<label><![CDATA[Cascading multi select example report]]></label>
<description><![CDATA[Example report with Cascading multi select input controls]]></description>
<creationDate>1328803684289</creationDate>
<resourceProperty name="PROP_RESOURCE_TYPE">
<value><![CDATA[com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.ReportUnit]]></value>
</resourceProperty>
<resourceProperty name="PROP_PARENT_FOLDER">
<value><![CDATA[/reports/samples]]></value>
</resourceProperty>
<resourceProperty name="PROP_VERSION">
<value><![CDATA[0]]></value>
</resourceProperty>
<resourceProperty name="PROP_RU_ALWAYS_PROPMT_CONTROLS">
<value><![CDATA[true]]></value>
</resourceProperty>
<resourceProperty name="PROP_RU_CONTROLS_LAYOUT">
<value><![CDATA[1]]></value>
</resourceProperty>
</resourceDescriptor>
....
</resourceDescriptors>
因此,我想从这个字符串中获得所有FIRST名称部分(不带引号),并将其放在数组或列表中(用javascript),就像我想要的那样:
list[0]=AllAccounts
list[1]=Cascading_multi_select_report
我试了好几种方法,但都不起作用,你能帮我吗?谢谢
使用xml2js
:
var xml2js = require('xml2js'),
parser = new xml2js.Parser();
parser.parseString(body, function(err, result) {
var names = result.resourceDescriptor.map(function(resourceDescriptor) {
return resourceDescriptor['@'].name;
});
console.log(names);
// => [ 'AllAccounts', 'Cascading_multi_select_report' ]
});
注意:我对xml2js
不太熟悉,可能有更好的库,尤其是当您需要解析大型文档时。
在这里,这将使您的生活更轻松。
学习使用javascript中提供的DOM解析器http://www.w3schools.com/dom/default.asp
尝试使用node-ectat,一个(快速!)流式XML解析库。假设您的XML文档是(或可以)存储为字符串:
var xp = require('node-expat');
function getResourceDescriptorNames(xmlStr) {
var names = [], parser = new xp.Parser('UTF-8');
parser.on('startElement', function(name, attr) {
if (name === 'resourceDescriptor') names.push(attr.name);
}).parse(xmlStr);
return names;
}
getResourceDescriptorNames(myXmlString);
// => ['AllAccounts', 'Cascading_multi_select_report']
请注意,如果您的XML文档来自流而不是缓冲区,并且您不希望对其进行缓冲,那么只需为每个数据块调用parser.parse(data)
,它就会正常工作。
相关文章:
- 如何检查字符串的一部分与数组匹配
- 将字符串的一部分设置为数组的一部分
- 用数字单位替换字符串的一部分
- 移除字符串(如果找到)移除JS中字符串的一部分
- 如何获得字符串的一部分
- 作为onclick确认的一部分,Razor中的字符串属性
- 用HTML元素替换字符串的一部分
- 如何知道找到的单词是字符串的一部分还是JavaScript中的函数调用
- j如何从给定字符串的一部分替换字符串
- 如何使用RegExp选择字符串的一部分并在变量中重用它
- 返回javascript中regex字符串的一部分
- JQuery获取字符串的一部分
- JavaScript Regexp仅匹配字符串的一部分
- 如何在数组jQuery中查找字符串的一部分
- 撇号标记在javascript字符串中与Backslash一起发送,该字符串使用ajax作为json对象的一部分发送到p
- JavaScript:将字符串的一部分放入DOM容器中,保存溢出
- 将字符串的一部分转换为DataTables的JSON
- 如何在javascript数组中剥离字符串的一部分
- 如何在Javascript/Jquery中突出显示给定字符串中的一部分字符串
- 如何在javascript中搜索整个字符串中的一部分字符串