2013-04-04 3 views
0

У меня есть проблема в том, что, когда узел XML не имеет значения, открытые и близкие метки на разных строках, как этотXML - JavaScript -> Как отображать XML-теги как HTML

<td ID="ref_4b73aa95ffd2289_phrPayer_1_DateEffective"> 
</td> 
<td ID="ref_4b73aa95ffd2289_phrPayer_1_DateTerminated"> 
</td> 

и когда узел имеет данные, открытые и близкие метки находятся на одной линии:

<td ID="ref_4b73ba85ffd2289_phrPayer_1_Company">Medicare Parts A&amp;B</td> 

у меня есть проблема в том, что, когда я прочитал данные, она построчно читать. Ниже данные XML, который используется:

<tr> 
    <td ID="ref__phrPayer_1_Company">Medicare Parts A&amp;B</td> 
    <td ID="ref__phrPayer_1_DateEffective"> 
    </td> 
    <td ID="ref__phrPayer_1_DateTerminated"> 
    </td> 
    <td ID="ref__phrPayer_1_PolicyNumber"> 
    </td> 
    <td ID="ref__phrPayer_1_GroupNumber"> 
    </td> 
    <td ID="ref__phrPayer_1_SubscriberName">AdamJulie</td> 
</tr> 

* Выше кодирования consistes из 6 колонн, хотя, как показано выше, есть 10 строк кода. Это основная проблема. *

Когда я пытаюсь разделить данные в Array используя следующие:

var purposeArray = purposeOfVisit.innerHTML.split("\n"); 

данные я получаю это:

Medicate Parts A&amp;B,,,,,,,,,AdamJulie 

, когда его должно быть:

Medicare Parts A&amp;B,,,,,AdamJulie 

Длина массива совпадает с числом строк, которая 10 в этом случае, когда оно должно быть 5.

То, что я хочу знать, как я прочитал td теги с данные.

Я хочу innerHTML прочитать феллинг код в качестве примера:

<td ID="ref__phrPayer_1_Company">Medicare Parts A&amp;B</td> 
<td ID="ref__phrPayer_1_DateEffective"> 
</td> 
<td ID="ref__phrPayer_1_DateTerminated"> 
</td> 
<td ID="ref__phrPayer_1_PolicyNumber"> 
</td> 
<td ID="ref__phrPayer_1_GroupNumber"> 
</td> 
<td ID="ref__phrPayer_1_SubscriberName">AdamJulie</td> 

вместо:

Medicare Parts A&amp;B 
. 
. 
. 
. 
. 
. 
. 
. 
AdamJulie 

. Представляет нулевое значение.

Возможно ли это, и если это так, как бы я это сделал? или заменить теги <td> на &lt;<td> и </td> тегами с </td>&lt;?

ответ

0

Метод innerHTML возвращает все, что лежит внутри HTML-тега. Если вы хотите, чтобы принести HTML тег с данными, я предлагаю вам использовать что-то вроде:

document.getElementsByTagName('td') 
+0

Причина для внутреннегоHTML заключается в том, что я использую '' для получения данных. Эти теги хранятся внутри div «purposeOfVisit». –

+0

Im немного смущенный. Вы сказали, что хотите, чтобы innerHTML читал « Части Medicare A & B« вместо «Части Medicare A & B». Это невозможно, innerHTML не будет читать это. Im также не уверен, где xslt входит в это изображение, но, возможно, вы хотите добавить 'disable-output-escaping =" yes "' к этому значению? – lassejl

+0

Извините, может быть, я должен был немного углубиться в то, что хочу. Файл xsl необходим для преобразования xml-файла. Файл eXML не просто используется как SataSource, он используется для создания всей веб-страницы. Увидев, что теги '' находятся внутри div, я хочу, чтобы '' получил, как описано выше. Получить данные с тегами. Затем внутреннийHTML будет получать все данные внутри div, включая теги ''. Я не уверен, является ли это методом кругового движения для этого, потому что я как бы новичок в xml и xslt. Я обнаружил, что 'disable-output-escaping =" yes "' не делает изменений –

0

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

Существует множество хороших синтаксических анализаторов XML, и лучше всего использовать один из них. Если вы должны самостоятельно проанализировать XML, вам необходимо изучить искусство написания парсера; это не работа для любителей.

+0

Спасибо за ответ. Тогда я буду искать XML-парсер :) –

1

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

var XMLString = "<tbody><tr><td ID=''>Medicare Parts A&amp;B</td><td ID=''></td><td ID=''></td><td ID=''></td><td ID=''></td><td ID=''>AdamJulie</td></tr><tr><td ID=''>Test2</td><td ID=''></td><td ID=''></td><td ID=''>123</td><td ID=''></td><td ID=''></td></tr></tbody>"; 

Где можно split строку после каждого столбца:

myXMLArray = XMLString .split("</td>"); 

И используйте регулярное выражение для удаления всех тегов.

var regex = /(<([^>]+)>)/ig; 

for(var x = 0; x < XMLString .length; x++) 
{ 
result[x] = XMLString [x].replace(regex, ""); 
} 

Гудлак ...

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