XML-данные для диаграммы Visual Studio - PullRequest
0 голосов
/ 02 февраля 2019

я пытаюсь получить данные из XML для построения диаграммы в Visual Studio.

Это мой тестовый файл XML

<data>
<point>
<x>5</x>
<y>5</y>
</point>
<point>
<x>6</x>
<y>7</y>
</point>

, когда я нажимаю на стартовую страницупустой и не отображает график.что я делаю не так?

    <script type="text/javascript">
$(document).ready(function () {

            var dataPoints = [];

            $.get("test.xml", function (data) {
                $(data).find("point").each(function () {
                    var $dataPoint = $(this);
                    var x = $dataPoint.find("x").text();
                    var y = $dataPoint.find("y").text();
                    dataPoints.push({ x: parseFloat(x), y: parseFloat(y) });
                });

                var chart = new CanvasJS.Chart("chartContainer", {
                    animationEnabled: true,
                    theme: "light2",
                    title: {
                        text: "test chart",
                    },
                    data: [{
                        type: "spline",
                        dataPoints: dataPoints,
                    }]
                });

                chart.render();

            });

        });
        </script>

<script type="text/javascript" src="https://canvasjs.com/assets/script/canvasjs.min.js"></script>
<div id="chartContainer" style="height: 400px; width: 100%;"></div>

если я предоставлю данные в коде, диаграмма сработает.данные из файла не работают

1 Ответ

0 голосов
/ 02 февраля 2019

Когда вы получаете ваш XML-документ, вам нужно сначала проанализировать его, потому что ваши «данные» на самом деле являются строкой.И когда вы его проанализируете, вы заметите, что ваш XML-документ недействителен (вы забыли свой </data> в конце)

const data = `<data><point><x>5</x><y>5</y></point><point><x>6</x><y>7</y></point></data>`

const res = $.parseXML(data);

$(res).find("point").each(function() {
  var $dataPoint = $(this);
  var x = $dataPoint.find("x").text();
  var y = $dataPoint.find("y").text();
  console.log(x, y);
});

console.log(res);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...