2013-11-26 1 views
0

У меня следующий бит XML. 2 вопроса, которые могут показаться anwser: Действительно ли это XML? (Для того, чтобы иметь значение и дочерние узлы внутри «Foo». Вопрос 2 (Важнее один) Как получить доступ к значению «TEXT» и «BOO» узел отдельно в JavaScript?XML-узел и текстовое значение. Это правильно?

<FOO> 
    TEXT 
    <BOO> 
    </BOO> 
    <BOO> 
    </BOO> 
</FOO> 

Пробовал. firstChild.nodeValue, и это отлично работает (возвращается значение TEXT), однако проблема возникает, если TEXT равно null. Вместо этого он возвращает объект [Object Element] (узел BOO). Поэтому в основном - я хочу получить текст TEXT, если его . там, если я не хочу, чтобы получить нуль или эквивалент

ответ

2

Да, это действительный XML. Это некоторые основные правила для правильного XML:

  • XML-документы должны иметь корневой элемент
  • элементы XML должны иметь закрывающий тег
  • XML теги чувствительны к регистру
  • элементы XML должны быть правильно вложенные
  • значения атрибутов XML должны быть указаны

Имея этот XML-документ:

<CATALOG> 
    VERSION_1 
    <CD> 
    <TITLE>Empire Burlesque</TITLE> 
    <ARTIST>Bob Dylan</ARTIST> 
    <COUNTRY>USA</COUNTRY> 
    <COMPANY>Columbia</COMPANY> 
    <PRICE>10.90</PRICE> 
    <YEAR>1985</YEAR> 
    </CD> 
    <CD> 
    <TITLE>Hide your heart</TITLE> 
    <ARTIST>Bonnie Tyler</ARTIST> 
    <COUNTRY>UK</COUNTRY> 
    <COMPANY>CBS Records</COMPANY> 
    <PRICE>9.90</PRICE> 
    <YEAR>1988</YEAR> 
    </CD> 
</CATALOG> 

Вы можете получить доступ к документу в JavaScript, используя код, например:

x=xmlDoc.getElementsByTagName("CD"); 
i=0; 

function displayCD() 
{ 
    // What you want here ---> 
    textInRootElemnt=xmlDoc.getElementsByTagName("CATALOG")[0].childNodes[0].nodeValue; 


    artist=(x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue); 
    title=(x[i].getElementsByTagName("TITLE")[0].childNodes[0].nodeValue); 
    year=(x[i].getElementsByTagName("YEAR")[0].childNodes[0].nodeValue); 
    txt="Artist: " + artist + "<br />Title: " + title + "<br />Year: "+ year; 
    document.getElementById("showCD").innerHTML=txt; 
} 

Где xmlDoc это ваш загруженный документ.

Рассмотрите следующие вопросы: tutorial о XML.

+0

Спасибо за базовое учебное пособие - ясно, что я не сделал себя достаточно ясно. Сожалею. Редактировал мой вопрос сейчас. – User2

+0

@ User2 рассмотрим мой отредактированный код. 'xmlDoc.getElementsByTagName (" КАТАЛОГ ") [0] .childNodes возвращает все текстовые узлы и узлы элементов. Если ваш xml сформирован так, что у вас есть и '\ n' или' \ n \ r' значение плюс плюс отступ, ваш первый ребенок будет всегда этим значением, то, например, VERSION_1 (если есть какой-то текст), а если нет будет иметь узел элемента. – sabotero

+0

На самом деле с помощью этого метода вы всегда будете иметь textNode, а затем elementNode, после теста, который я только что сделал! – sabotero

0

Да, это действительно XML

Пожалуйста, перефразировать ваш вопрос ясно:. Как Я обращаюсь к 'ТЕКСТ' и отдельно в JavaScript?

+0

Извините, у меня была опечатка ^^ – User2

 Смежные вопросы

  • Нет связанных вопросов^_^