来自 XML 的错误值

Posted

技术标签:

【中文标题】来自 XML 的错误值【英文标题】:Wrong value from XML 【发布时间】:2020-12-13 14:44:44 【问题描述】:

我有这样的 XML:

<Result>
    <Tours>
            <Tour>
        
        <id>116112250590@804</id>

        <operatorId>2672</operatorId>

        <cityId>1000</cityId>
        <countryId>12</countryId>
        <roomSizeId>14</roomSizeId>

        <departure>2020-09-16</departure>
        <arrival>2020-09-23</arrival>
        <duration>7</duration>
        <ticket>1</ticket>
        <directFlight>false</directFlight>
.............

尝试从 id 节点 Result > Tours > Tour > ID 获取值 使用 ajax 解析 XML

$(data).find("Tour").each(function () 
        if ($(this).find("directFlight").text() == 'false') 
            var directFlight = "с пересадкой";
         else 
            var directFlight = "прямой";
        
        $("#tours").append('<div class="col-12">'+
            '<div class="card mb-4 shadow tour">'+
                '<div class="row no-gutters">'+
                    '<div class="col-md-3 main-image" style="background-image:url(http:' + $(this).find("Allocation>PreviewPhoto>url").text() + ');">'+
                        '<div class="rating p-2 rounded"><i class="far fa-star mr-2"></i>' + $(this).find("Allocation>rate").text() + '</div>'+
                        '<div class="price p-2 rounded">' + $(this).find("price").text() + '<i class="fas fa-ruble-sign ml-2"></i></div>'+
                    '</div>'+
                    '<div class="col-md-9">'+
                        '<div class="row no-gutters">'+
                            '<div class="col-md-7">'+
                                '<div class="card-body py-2">'+
                                    '<h5 class="card-title m-0">' + $(this).find("Allocation>name").text() + '</h5>'+
                                    '<span class="text-muted">' + $(this).find("Resort>name").text() + ' , ' + $(this).find("ResortPlace>name").text() + '</span>'+
                                '</div>'+
                                '<ul class="list-group list-group-flush">'+
                                    '<li class="list-group-item"><span class="text-muted">Номер:</span> ' + $(this).find("RoomSize>name").text() + ' (' + $(this).find("RoomSize>description").text() + ')</li>'+
                                    '<li class="list-group-item"><span class="text-muted">Вид:</span> ' + $(this).find("RoomView>name").text() + ' (' + $(this).find("RoomView>description").text() + ')</li>'+
                                    '<li class="list-group-item"><span class="text-muted">Питание:</span> ' + $(this).find("Meal>name").text() + ' (' + $(this).find("Meal>description").text() + ')</li>'+
                                    '<li class="list-group-item"><span class="text-muted">Тип номера:</span> ' + $(this).find("RoomType>name").text() + ' (' + $(this).find("RoomType>description").text() + ')</li>'+
                                '</ul>'+
                            '</div>'+
                            '<div class="col-md-5 border-left">'+
                                '<ul class="list-group list-group-flush">'+
                                    '<li class="list-group-item"><span class="text-muted">Вылет:</span> ' + $(this).find("departure").text() + ' (ночей: ' + $(this).find("duration").text() + ')</li>'+
                                    '<li class="list-group-item"><span class="text-muted">Перелет:</span> ' + directFlight + ' </li>'+
                                    '<li class="list-group-item"><span class="text-muted">Туроператор:</span> ' + $(this).find("Operator>name").text() + ' </li>'+
                                '</ul>'+
                                '<div class="text-center mt-3">'+
                                    '<button type="button" class="btn btn-primary tour-modal" data-id="' + $(this).find("id").text() + '">Подробнее</button>'+
                                '</div>'+
                            '</div>'+
                        '</div>'+
                    '</div>'+
                '</div>'+
            '</div>'+
        '</div>');

我在 XML 中的 id 值 116112250590@804 但在附加 id = 116112250590@80410001226721471250673211382422 之后

更新:添加了我的完整附加代码 这里截图:

【问题讨论】:

预期输出是什么? 正确的身份证号码。 所以你有不止一个 Tour 并且附加文本不会与之前的文本有任何分离 但是其他数据都正常显示。为什么只有ID显示后有附加价值? 因为它也找到了所有其他带有 Id 的元素,所以你得到了一个元素集合。 【参考方案1】:

我在 .text() 之前使用 .first() 找到了解决方案。不知道为什么 .text() 不能正常工作。

【讨论】:

以上是关于来自 XML 的错误值的主要内容,如果未能解决你的问题,请参考以下文章

来自 MySQL 的 XML 数据

setText 不显示来自 Firebase 的数据

XML XSD 错误:org.xml.sax.SAXParseException:s4s-elt-schema-ns:元素“配置”的命名空间必须来自模式命名空间

尝试使用来自提供者的值时出现错误“空值检查运算符用于空值”

更改 XML 节点属性值会导致“命名空间错误”

来自 Node Exporter 的 cpu 使用值错误