Добавьте ссылку на тег XML и проанализируйте ее с помощью jquery. - PullRequest
0 голосов
/ 18 марта 2011

Я могу разобрать xml с помощью jquery. Теперь я хочу, чтобы проанализированный текст был гиперссылкой, а не простым текстом. Ниже то, что я написал.

 $(xml).find("customers")
     .each(function(){
          $("#guys").append("<div class="mybox"><a href="+$(this).find('customer_link').text()+"target="_blank">"+$(this).find('customer_company').text()"</a></div>");                                                                                      

});

А вот и XML

    <customer_company><![CDATA[Google<br>]]></customer_company>
    <customer_link>http://www.google.com</customer_link>

</myguys>

<myguys>

    <customer_company><![CDATA[EMC<br>]]></customer_company>
    <customer_link>http://www.emc.com</customer_link>

</myguys>
</info>

Я знаю, что в логике нет ничего плохого, я думаю, что это просто синтаксическая ошибка с тегом. Может кто-нибудь сказать мне, где я делаю ошибку здесь и указать мне хороший учебник

Ответы [ 2 ]

1 голос
/ 18 марта 2011

Вы смешиваете стили цитат.Строки в одинарных кавычках (') могут содержать неэкранированные двойные кавычки (") и наоборот.Наличие неэкранированных двойных кавычек в строке с двойными кавычками нарушает ваш код.

$("#guys").append("<div class="mybox"><a href="+$(this).find('customer_link')
ss^   se^       ss^         se^   ss^       se^            ss^           se^   

.text()+"target="_blank">"+$(this).find('customer_company').text()"</a></div>"); 
      ss^     se^    ss^e^            ss^              se^      ss^        se^ 

ss == string start,
se == string end 

Вы можете видеть, как это создает случайные неопределенные ссылки, такие как mybox, но не создает строку, которую вы намеревались.Попробуйте это:

$("#guys").append("<div class='mybox'><a href=" + 
    $(this).find("customer_link").text() +
    "' target='_blank'>" + 
    $(this).find("customer_company").text() + 
    "</a></div>");  

В качестве альтернативы, вы можете использовать jQuery для построения всех элементов и полностью избежать появления атрибутов с кавычками в вашей строке:

 $("#guys").append($("<div />")
                      .addClass("mybox")
                      .append($('<a/>', {  
                          href: $(this).find("customer_link").text(),  
                          target: "_blank",  
                          text: $(this).find("customer_company").text()  
                      })));

CDATA в вашемxml вызовет проблемы с jQuery, потому что он анализирует xml, как html, а не в соответствии со спецификациями xml.Возможно, вам лучше разбирать xml с помощью плагина, например jParse , если вы не можете удалить CDATA и <br> из элемента customer_company.

0 голосов
/ 18 марта 2011

Посмотрите на фрагмент вашего кода:

$("#guys").append("<div class="mybox">.......

Вы закрываете теги, когда, возможно, не хотите:

Попробуйте это:

$("#guys").append("<div class='mybox'>.......

Вы должны будете подумать немного более тщательно, поскольку у вас есть несколько цитат в вашей строке позже.

...