У Nodejs / handlebars возникла проблема с созданием XML-файла определенного размера

#xml #node.js #handlebars.js

#xml #node.js #handlebars.js

Вопрос:

У меня возникла проблема с созданием XML-файла. Если я запущу только 20 или около того ‘properties’: properties: properties.slice(0, 20), я получу действительный XML-файл. Если я попытаюсь запустить все мои свойства: properties: свойства, где у меня около 100, мой XML недействителен.

Он возвращается как недопустимый из-за того, что случайный XML-элемент не был закрыт должным образом.

Есть какие-нибудь подсказки, почему это сработало бы, скажем, для … 20, но не для 100?

Код, который генерирует XML:

 var express = require('express');
var router = express.Router();


router.get('/mits.xml', function(req, res) {
   var date = new Date();
   var y = date.getYear()   1900;
   var m = date.getMonth()   1;
   var d = date.getDate();

   api.getProperties(function(e, properties) {

      res.header('Content-Type', 'application/xml');
      res.render('mits/index', {
         properties: properties.slice(0,20),
         //properties: properties,
         layout: false,
         month: m,
         year: y,
         date: d
      });

   });
});

module.exports = router;
  

Файл шаблона для handlebars:

 <?xml version="1.0" encoding="UTF-8"?>
<PhysicalProperty xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Management
        IDValue="XYZ"
        OrganizationName="XYZ Company">
</Management>{{#properties}}
<Property IDValue="123" OrganizationName="XYZ">
    <PropertyID>
        <MarketingName>XYZ</MarketingName>
        <LegalName>XYZ Company</LegalName>
        <WebSite>XYZ</WebSite>
        <Address AddressType="property">
            <AddressLine1>XYZ</AddressLine1>
            <City>XYZ</City>
            <State>XYZ</State>
            <PostalCode>XYZ</PostalCode>
            <Country>United States</Country>
        </Address>
        <Phone PhoneType="office">
            <PhoneNumber>XYZ</PhoneNumber>
        </Phone>
        <Email>XYZ</Email>
    </PropertyID>
    <General_ID IDValue="XYZ"></General_ID>
    <ILS_Identification
            ILS_IdentificationType="Apartment"
            RentalType="Unspecified">
        <Latitude>-126.1234</Latitude>
        <Longitude>126.1234</Longitude>
        <LastUpdate
                Month="08"
                Day="01"
                Year="2014"/>
    </ILS_Identification>
    <Information>
        <StructureType>Standard</StructureType>
        <UnitCount>2</UnitCount>
        <OfficeHour>
            <OpenTime>8:00 AM</OpenTime>
            <CloseTime>5:00 PM</CloseTime>
            <Day>Monday</Day>
        </OfficeHour>
    </Information>
    <Concession Active="true">
        <Value>0.00</Value>
        <Term>0</Term>
        <DescriptionHeader>XYz</DescriptionHeader>
        <DescriptionBody>NA</DescriptionBody>
        <DescriptionFooter>NA</DescriptionFooter>
    </Concession>
    <Amenity AmenityType="Other">
        <Description>XYz</Description>
    </Amenity>
    <Floorplan
            IDValue="XYZ"
            OrganizationName="XYZ">
        <Name>XYZ</Name>
        <UnitCount>0</UnitCount>
        <Room RoomType="Bedroom">
            <Count>2.0</Count>
            <Comment>NA</Comment>
        </Room>
        <Room RoomType="Bathroom">
            <Count>2.0</Count>
            <Comment>NA</Comment>
        </Room>
        <SquareFeet
                Min="123"
                Max="123"/>
        <MarketRent
                Min="123"
                Max="123"/>
        <EffectiveRent
                Min="123"
                Max="123"/>
    </Floorplan>
    <File FileID="XYZ" Active="true">
        <FileType>Floorplan</FileType>
        <Description>XYZ</Description>
        <Name>XYz</Name>
        <Caption>XYz</Caption>
        <Format>image/jpeg</Format>
        <Src>XYZ</Src>
        <Rank>XYZ</Rank>
    </File>
    <File FileID="XYZ" Active="true">
        <FileType>Photo</FileType>
        <Description>XYZ</Description>
        <Name>XYZ</Name>
        <Caption>XYZ</Caption>
        <Format>image/jpeg</Format>
        <Src>XYZ</Src>
        <Rank>1</Rank>
    </File>
</Property>
{{/properties}}
</PhysicalProperty>
  

Ответ №1:

Похоже, что проблем с кодом нет. Я делал копию xml из своего браузера в инструмент проверки. Если я загружаю xml через wget, он проходит проверку нормально.