如何使用javascript
问题描述:
我有一个包含该值如何使用javascript
<AirportCode>LKO</AirportCode> <CityOrAirportName>LUCKNOW AMAUSI</CityOrAirportName> <Country>India</Country> <CountryAbbrviation>IN</CountryAbbrviation> <CountryCode>733</CountryCode> <GMTOffset>-5.5</GMTOffset> <RunwayLengthFeet>7835</RunwayLengthFeet>
我怎样才能提取此国家代码,在这种情况下,733国家代码可以是不同的变量,从字符串中提取的值,所以我需要以某种方式获取CountryCode标记内的值
答
您可以通过编程创建div
。填充其innerHTML
,然后获得CountryCode
元素。
var data = "<AirportCode>LKO</AirportCode> <CityOrAirportName>LUCKNOW AMAUSI</CityOrAirportName> <Country>India</Country> <CountryAbbrviation>IN</CountryAbbrviation> <CountryCode>733</CountryCode> <GMTOffset>-5.5</GMTOffset> <RunwayLengthFeet>7835</RunwayLengthFeet>";
var div = document.createElement("div");
div.innerHTML = data;
console.log(div.querySelector('CountryCode').textContent);
更好parse XML使用
var data = "<AirportCode>LKO</AirportCode> <CityOrAirportName>LUCKNOW AMAUSI</CityOrAirportName> <Country>India</Country> <CountryAbbrviation>IN</CountryAbbrviation> <CountryCode>733</CountryCode> <GMTOffset>-5.5</GMTOffset> <RunwayLengthFeet>7835</RunwayLengthFeet>";
var oParser = new DOMParser();
var oDOM = oParser.parseFromString('<root>' + data + '</root>', "text/xml");
console.log(oDOM.querySelector('CountryCode').textContent)
+2
如果您要解析XML,最好解析XML,而不是滥用HTML解析器。 (我们不知道这个代码是在浏览器上运行的。) –
答
您可以使用XML解析库,或只是一个简单的正则表达式,如果这是你想要的东西。
只需使用正则表达式:/<CountryCode>(\d+)<\/CountryCode)/
例如:
var str = '<AirportCode>LKO</AirportCode> <CityOrAirportName>LUCKNOW AMAUSI</CityOrAirportName> <Country>India</Country> <CountryAbbrviation>IN</CountryAbbrviation> <CountryCode>733</CountryCode> <GMTOffset>-5.5</GMTOffset> <RunwayLengthFeet>7835</RunwayLengthFeet>';
function extractCountryCode(xmlStr) {
var matches = xmlStr.match(/<CountryCode>(\d+)<\/CountryCode)/);
if (matches.length == 2) {
return matches[1];
} else {
return null;
}
}
console.log(extractCountryCode(str));
答
您可以使用功能的indexOf和子:
(片段加入到显示结果)
var data = "<AirportCode>LKO</AirportCode> <CityOrAirportName>LUCKNOW AMAUSI</CityOrAirportName> <Country>India</Country> <CountryAbbrviation>IN</CountryAbbrviation> <CountryCode>733</CountryCode> <GMTOffset>-5.5</GMTOffset> <RunwayLengthFeet>7835</RunwayLengthFeet>";
var index1 = data.indexOf("<CountryCode>") + "<CountryCode>".length;
var index2 = data.indexOf("</CountryCode>");
var code = data.substring(index1, index2);
console.log(code);
CountryCode.length的添加是因为indexOf方法将返回文本的第一次出现。
希望得到这个帮助。
人们可能不同意,但在这样的简单情况下使用正则表达式可能会好吗? – Robin
@Robin这很好。 –