来自 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 的错误值的主要内容,如果未能解决你的问题,请参考以下文章
XML XSD 错误:org.xml.sax.SAXParseException:s4s-elt-schema-ns:元素“配置”的命名空间必须来自模式命名空间