Ik probeer een xml weer te geven op een VF-pagina met contentType="text/xml" maar ik krijg een foutmelding in Chrome

voer hier de beschrijving van de afbeelding in

Fout in Firefox XML Parsing Error: junk after document element Location: https://letscreatecustomdomainname-dev-ed--sii.ap6.visual.force.com/apex/PackageXMLGenerator?core.apexpages.devmode.url=1&core.apexpages.request.devconsole=1 Line Number 1, Column 228:<?xml version="1.0" encoding="UTF-8"?><products><product><Name>Xbox One</Name><Code>XBO</Code></product><product><Name>PlayStation 4</Name><Code>PS4</Code></product><product><Name>WII</Name><Code>Wii</Code></product></products><script type="text/javascript"> SfdcApp.Visualforce.viewstate.ViewstateSender.sendViewstate("https://letscreatecustomdomainname-dev-ed.my.salesforce.com", "sii__PackageXMLGenerator"); </script> -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------^

Ik krijg er ook wat uit, maar er ontbreken alle tags. Ik zie een juiste xml in foutopsporing. Hieronder staat mijn code. Kunt u mij vertellen wat de reden zou kunnen zijn.

Apex-klasse om de XML te genereren

public class PackageXMLGeneratorController { public Blob csvFileBody{get;set;} public string csvAsString{get;set;} public string xmlstring { get; set;} public PackageXMLGeneratorController(){ DOM.Document doc = new DOM.Document(); dom.XmlNode products = doc.createRootElement("products", null, null); dom.XmlNode body1= products.addChildElement("product", null, null); body1.addChildElement("Name", null, null).addTextNode("Xbox One"); body1.addChildElement("Code", null, null).addTextNode("XBO"); dom.XmlNode body2= products.addChildElement("product", null, null); body2.addChildElement("Name", null, null).addTextNode("PlayStation 4"); body2.addChildElement("Code", null, null).addTextNode("PS4"); dom.XmlNode body3= products.addChildElement("product", null, null); body3.addChildElement("Name", null, null).addTextNode("WII"); body3.addChildElement("Code", null, null).addTextNode("Wii"); xmlstring = doc.toXmlString(); System.debug("========>"+xmlstring); } public ApexPages.PageReference downloadXML( ) { return Page.PackageXMLDownload; } } 

VF-pagina

<apex:page controller="PackageXMLGeneratorController" contentType="text/xml;filename.xml"> <apex:outputText escape="false" value="{!xmlstring}" /> </apex:page> 

Antwoord

Om het te laten werken gewoon rechts , moet u goed op de extra regel letten breekt in uw code. Ik heb het volgende gemaakt in mijn organisatie:

<apex:page controller="q203222" contentType="text/xml;myfile.xml" showHeader="false">{!content}</apex:page> 

public class q203222 { public String getContent() { Dom.Document d = new Dom.Document(); d.createRootElement("test",null,null); d.getRootElement().addChildElement("data",null,null); return d.toXmlString(); } } 

Gebruik geen apex: outputText, en hebben niet meer dan 1 regel op uw pagina. Het moet er in wezen identiek uitzien aan dit patroon om geen fouten te krijgen tijdens het parseren.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *