2012-10-08 2 views
0

У меня есть XML-строка, как это:Как получить значение, встроенное внутри тега xml, используя javascript?

<?xml version="1.0"?> 
<itemsPrice> 
    <setA> 
      <Category Code="A1"> 
       <price>30</price> 
      </Category> 
      <Category Code="A2"> 
        <price>20</price> 
      </Category> 
    </setA> 
    <setB> 
      <Category Code="A3"> 
       <price>70</price> 
      </Category> 
      <Category Code="A4"> 
       <price>80</price> 
      </Category> 
    </setB> 
</itemsPrice> 

Как получить значение атрибута «Код» в яваскрипте переменного или массив? Я хочу: A1, A2, A3, A4 желательно в массиве. Или, если он может быть получен внутри «каждой» функции, которая тоже хороша. Как мне заняться в Javascript?

Вот что я пробовал:

var xml=dataString; // above xml string 
xmlDoc = $.parseXML(xml); 
$xml = $(xmlDoc); 
$code = $xml.find("Category"); 
alert($code.text()); // gives me the values 30 20 70 80 
         // I want to get the values A1 A2 A3 A4 

ответ

1

Попробуйте

var arr = []; 
$code = $xml.find("Category"); 

$.each($code , function(){ 
    arr.push($(this).attr('Code')); 
}); 

console.log(arr); // Will have the code attributes 
+0

Большое спасибо. Он отлично работает! – zolio

+0

@zolio в отличие от моего ответа? –

1

Вы можете получить все коды в массиве с помощью следующего сценария

codeArray = [] 
$($($.parseXML(dataString)).find('Category')).each(function(){ codeArray.push($(this).attr('Code'))}) 

codeArray будет ["A1", "A2", "A3", "A4"]

+0

Большое спасибо. Этот код работает идеально, немного сложнее понять для меня. – zolio

+0

@zolio На самом деле то же самое. Я просто не назначал переменные $ .parseXML (dataString), а затем для $ (xml) .find ('Category'). Я буду легче понять, если вы замените заявления, которые я упомянул с переменной. Тогда, это то же самое :) –

0

Это должно помочь вам

$xml.find('Category').each(function(){ 
    alert($(this).attr('Code')); 
}); 
Смежные вопросы