2017-01-02 58 views
-1

我有一个包含该值如何使用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标记内的值

+1

人们可能不同意,但在这样的简单情况下使用正则表达式可能会好吗? – Robin

+0

@Robin这很好。 –

回答

3

您可以通过编程创建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解析器。 (我们不知道这个代码是在浏览器上运行的。) –

0

您可以使用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)); 
0

您可以使用功能的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方法将返回文本的第一次出现。

希望得到这个帮助。