2015-04-21 2 views
0

Я хочу отобразить XML, который будет извлекаться из бэкэнд в панели и окне EXT JS. Я попытался создать новое окно и открыть новое окно и присвоить тип документа, но он не получает должным образом отформатированный liek, когда он открывается в IE. Также есть способ открыть его в окне EXT JS вместо окна браузера. Мой XML является динамическим, который может быть различным XML (с разными корневыми узлами) каждый раз. Вот то, что я пытался до сих пор не повезлоОтображение/рендеринг XML в EXTJS

myXmlWindow = window.open('', 'FullView', 'toolbar=no,location=no,scrollbars=yes'); 
 
myXmlWindow.document.write("<link rel=\"stylesheet\" href=\"resources/XMLDisplay.css\" type=\"text/css\"><center><table class=\"data\"><tr><th>" + xmlString + "</td></tr></table></center>");

Может кто-нибудь помочь мне с этим. Все, что нужно сделать, это отображение XML так же, как ниже скриншоте в IE

Sample XML viewed in IE

Вот мой XML

<?xml version="1.0" encoding="UTF-8" ?> 
 
<Record> 
 
    <SYS_ID>238</SYS_ID> 
 
    <SYS_DSC>This is a test XML</SYS_DSC> 
 
    <GTMU_ID>6</GTMU_ID> 
 
    <LOC_ID>3760</LOC_ID> 
 
    <SLS_UNIT_ID>0090008924</SLS_UNIT_ID> 
 
    <RLTNSHP_TYP_CDV>15</RLTNSHP_TYP_CDV> 
 
    <RLTNSHP_TYP_NM>This is a test XML</RLTNSHP_TYP_NM> 
 
    <RLTNSHP_STRT_DT>1985-12-29T00:00:00-06:00</RLTNSHP_STRT_DT> 
 
    <RLTNSHP_END_DT>9999-12-31T00:00:00-06:00</RLTNSHP_END_DT> 
 
</Record>

Если я ниже как предложено Йеллен,

var w= window.open('data:text/xml,'+encodeURI(xmlString));

Я получаю ниже ошибки

Error

+0

Вы XML является недействительным. Вот ваш правильный XML - это тест XML 0090008924 15 Это тестовый XML 1985-12-29T00: 00: 00-06: 00 9999-12-31T00: 00: 00-06 : 00 Yellen

+0

В чем разница? – Kapil

+0

Я думаю, что я представил несоответствующие теги, с которыми я столкнулся. Но xml, который я написал, работает. – Yellen

ответ

1

Попробуйте эту скрипку - https://fiddle.sencha.com/#fiddle/lld

Вы можете просто позвонить в window.open() с параметром ('data:text/xml,' + xmlText), вы можете также передать другие параметры окна, как вам хотеть. Это откроет новую вкладку с содержимым xml.

XML в хроме -

xml in chrome

+0

Ext.window.Window - это просто специальный Ext.panel.Panel и не является окном окна браузера – Yellen

+0

Привет, Yellen, когда я пытаюсь это сделать, я получаю ошибку: эта веб-страница не доступно ERR_INVALID_URL – Kapil

+0

Вы кодируете xmlText? – Yellen

1

Попробуйте использовать IFRAME. ExtJS предоставляет расширение для этого с помощью Ext.ux.IFrame, вы можете вставить свой xml в Ext.Window.

var xmlText = '<?xml version="1.0" encoding="UTF-8" ?><Employee><Id>22</Id></Employee>'; 

xmlText = encodeURI(xmlText); 

var myWindow = Ext.create("Ext.window.Window", { 
    width: 800, 
    height: 600, 
    layout: "fit", 
    items: [Ext.create("Ext.ux.IFrame", { 
     src: 'data:text/xml,' + xmlText 
    })] 
}); 

myWindow.show(); 
+0

Я думаю, что содержание IFrame будет анализируемым значением xml и фактически не отобразит его как xml. В окне будет отображаться только 22. – Yellen

+0

Это правильно. IFame анализирует XML-документ и отображает только содержимое – Kapil

+2

Возможно, вы можете использовать альтернативный генератор xml-вывода? Как [xmlspectrum] (https://github.com/pgfearo/xmlspectrum) –

0

Хитрость заключается в том, чтобы вложить свой XML в тегах что-то вроде этого

https://fiddle.sencha.com/#fiddle/lo9

Не совсем, как я хотел, но своего рода обходной путь

+0

Я думал, что вы хотите, чтобы это отображалось как изображение, которое вы приложили, - с этими вариантами расширения и сглаживания! Просто отображение содержимого xml, поскольку текст действительно отличается. – Yellen

+0

Да, это было оригинальное намерение ... но я отказался от этого. Так что я не буду называть свое решение ответом, но что-то работоспособное/работающее. Большое вам спасибо за вашу помощь – Kapil

+0

Я просто смущен, как этот xml дал ошибку в вашем случае. – Yellen

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