Praveen Raghuvanshi Ответов: 3

Отображение XML в HTML Div


Я хотел бы отобразить древовидную структуру XML, как она есть на HTML-странице.
XML:
<employees>
            <employee id="1">
                <firstName>OneFirstName</firstName>
                <lastname>OneSecondName</lastname>
            </employee>
            <employee id="2">
                <firstname>TwoFirstName</firstname>
                <lastname>TwoSecondName</lastname>
            </employee>
        </employees>


Строковая версия XML поступает из службы WCF и визуализируется с помощью угловой привязки, как показано ниже.
{{MyObj.XMLText}}


Несколько вещей, которые я пробовал, не сработали для меня. Может быть, я что-то упускаю и ищу недостающее звено.

http://tiku.io/questions/2496035/how-to-display-xml-data-in-div[^]

http://www.experts-exchange.com/Programming/Languages/.NET/ASP.NET/Q_23513630.html[^]

http://stackoverflow.com/questions/10498188/how-to-display-xml-data-in-div[^]

Приведенные выше ссылки предлагают два подхода к отображению XML:
1-преобразование HTML с использованием htmlEntities (...), которое заменяет такие символы, как <, > на их HTML-версию. Попробовал это сделать, и он показывает XML, однако отступ и интервал теряются. Все приходит в строку и не форматируется как XML.
2. Преобразование HTML, используя библиотеку vkbeautify.js . Попробовал это сделать, и это дает правильное форматирование в диалоговом окне оповещения. Однако на главной странице непрерывно отображаются только значения XML-тегов. Здесь отступ теряется.

Пожалуйста, найдите ниже код. Я использовал простой блокнот, чтобы создать его.
Примечание: скачать vkbeautify.0.99.00.beta.js от
https://code.google.com/p/vkbeautify/downloads/list[^]

Код: index.html

<html>
    <title>
        <h1> HTML Javascript page </h1>
    </title>
    <head>
        <script type="text/javascript" src="vkbeautify.0.99.00.beta.js"></script>
    </head>
    <body>
         <h1>Employees</h1>
        <button type="button" onclick="displayXml()">Display Employee xml.</button>
        <hr/>
        <p id="empDetails"></p>
        <script>
            var xmlString = "<employees>";
            xmlString = xmlString +"    <employee id='1'>";
            xmlString = xmlString +"        <firstName>OneFirstName</firstName>";
            xmlString = xmlString +"        <lastname>OneSecondName</lastname>";
            xmlString = xmlString +"    </employee>";
            xmlString = xmlString +"    <employee id='2'>";
            xmlString = xmlString +"        <firstname>TwoFirstName</firstname>";
            xmlString = xmlString +"        <lastname>TwoSecondName</lastname>";
            xmlString = xmlString +"    </employee>";
            xmlString = xmlString +"</employees>";

            function displayXml() {
                document.getElementById('empDetails').innerHTML = xmlString;
            };

            function htmlEntities(str) {
                    var htmlString = String(str).replace(/&/g, '&amp;').replace(/</g,     '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
                    return htmlString;
            }

            function displayXml() {
                        // Normal display of xml
                        document.getElementById('empDetails').innerHTML = xmlString;
                        alert("Normal display: \n" + xmlString);

                        // HTML conversion only
                        var htmlString = htmlEntities(xmlString);
                        document.getElementById('empDetails').innerHTML = htmlString;
                        alert("HTML formatted display: \n" + htmlString);

                        // Using vkbeautify
                        var beautifyHtmlString = vkbeautify.xml(xmlString);
                        document.getElementById('empDetails').innerHTML = beautifyHtmlString;
                        alert("VKbeautify display: \n" + beautifyHtmlString);
                    };
        </script>
    </body>
</html>



Заранее спасибо!!!

Sergey Alexandrovich Kryukov

"Не сработало" - это не информативно. Непонятно, как именно вы хотите его отобразить, но я не вижу никаких проблем.
Что вы пробовали так далеко?
—СА

Praveen Raghuvanshi

Обновлен вопрос!!!

Sergey Alexandrovich Kryukov

Означает ли это, что вам просто нужно было отобразить XML-текст? И текст жестко закодирован?
И в чем проблема?
—СА

Praveen Raghuvanshi

Да, мне нужно отобразить XML-текст таким, какой он есть, и он приходит в виде строки из веб-службы. Просто для представления я жестко закодировал его.
Однако, с использованием <пред Ланг="в формате XML"&ГТ;&ЛТ;/пре&ГТ; работал для меня.

Sergey Alexandrovich Kryukov

Спасибо за разъяснение. Все в порядке. Просто бежать разметки HTML (использовать &амп;ГТ; для >, и так далее) и использовать в <предварительно&ГТ;.
—СА

Mohibur Rashid

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

Praveen Raghuvanshi

Обновлен вопрос!!!

Praveen Raghuvanshi

[Код удален — SA]

3 Ответов

Рейтинг:
2

Sergey Alexandrovich Kryukov

Пожалуйста, ознакомьтесь с моими комментариями к этому вопросу. Вам нужно экранировать HTML-символы с помощью символьных сущностей.

Пожалуйста, смотрите:
http://stackoverflow.com/questions/18749591/encode-html-entities-in-javascript[^],
http://jsfiddle.net/E3EqX/13[^],
http://stackoverflow.com/questions/5499078/fastest-method-to-escape-html-tags-as-html-entities[^].

—СА


Praveen Raghuvanshi

Спасибо, что поделились приведенными выше ссылками!

Рейтинг:
18

Praveen Raghuvanshi

Это сработало для меня, инкапсулировав XML-строку в

<pre lang="xml">{{xmlString}}</pre>
где xmlString - это строковое представление XML.


Рейтинг:
0

Nitin Singh India

Использовать

<pre lang="xml">{{xmlString}}
тег, а затем использовать
var beautifyHtmlString = vkbeautify.xml(xmlString);
                        document.getElementById('empFormatted').appendChild(document.createTextNode(beautifyHtmlString)); 
где вы размещаете вывод vkbeautify...


Nitin Singh India

Есть ли причина, по которой все ответы были отклонены ? Мой ответ был из самого производственного кода