Error when trying to parse xml using laravel
up vote
0
down vote
favorite
I am trying to parse the following xml and keep on running into the same error message "Unable to parse XML from string", please see the below error message.
protected function resolveXmlObject($xml): Document
{
if (! $xml) {
throw new InvalidContentException('Unable to parse XML from string.');
}
return $this->document->setContent($xml);
}
I am new to using xml and am unsure what the issue is with the code that I have provided. If someone could point me in the right direction as to what I am doing wrong that would be greatly appreciated.
Controller
use OrchestraParserXmlFacade as XmlParser;
public function upload()
{
$xml = XmlParser::load(asset('xml/data.xml'));
$user = $xml->parse([
'id' => ['uses' => 'programme::id'],
'name' => ['uses' => 'programme.name'],
]);
return view ('projects.upload', compact('user'));
}
XML
<?xml version="1.0" encoding=”UTF-8”?>
<programme data>
<title>Programme Data</title>
<programme id="1">
<programme 1>
<name>A nightmare on Elm Street</name>
<image path>../images/Elm Street.jpg</image path>
<mood>Scared</mood>
</programme 1></programme>
View
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<h1>Moodslider</h1>
<div class="box">
<td style="text-align: center; vertical-align: middle;">
</div>
<div class="slidecontainer">Agitated
<input type="range" min="1" max="5" value="1" class="slider" id="myRange">Calm
</div>
<div class="slidecontainer">Happy
<input type="range" min="1" max="5" value="1" class="slider" id="myRange">Sad
</div>
<div class="slidecontainer">Tired
<input type="range" min="1" max="5" value="1" class="slider" id="myRange">Wide Awake
</div>
<div class="slidecontainer">Scared
<input type="range" min="1" max="5" value="1" class="slider" id="myRange">Fearless
</div>
<form action="/action_page.php">
<input type="text" name="fname" placeholder="No content 1"><br>
<input type="text" name="lname" placeholder="No content 2"><br>
</form>
<form action="/projects/upload" method="get" enctype="multipart/form- data">Select image to upload:
<!--{{ csrf_field() }} -->
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Upload Image" name="submit">
</form>
</body>
</html>
php xml laravel
|
show 2 more comments
up vote
0
down vote
favorite
I am trying to parse the following xml and keep on running into the same error message "Unable to parse XML from string", please see the below error message.
protected function resolveXmlObject($xml): Document
{
if (! $xml) {
throw new InvalidContentException('Unable to parse XML from string.');
}
return $this->document->setContent($xml);
}
I am new to using xml and am unsure what the issue is with the code that I have provided. If someone could point me in the right direction as to what I am doing wrong that would be greatly appreciated.
Controller
use OrchestraParserXmlFacade as XmlParser;
public function upload()
{
$xml = XmlParser::load(asset('xml/data.xml'));
$user = $xml->parse([
'id' => ['uses' => 'programme::id'],
'name' => ['uses' => 'programme.name'],
]);
return view ('projects.upload', compact('user'));
}
XML
<?xml version="1.0" encoding=”UTF-8”?>
<programme data>
<title>Programme Data</title>
<programme id="1">
<programme 1>
<name>A nightmare on Elm Street</name>
<image path>../images/Elm Street.jpg</image path>
<mood>Scared</mood>
</programme 1></programme>
View
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<h1>Moodslider</h1>
<div class="box">
<td style="text-align: center; vertical-align: middle;">
</div>
<div class="slidecontainer">Agitated
<input type="range" min="1" max="5" value="1" class="slider" id="myRange">Calm
</div>
<div class="slidecontainer">Happy
<input type="range" min="1" max="5" value="1" class="slider" id="myRange">Sad
</div>
<div class="slidecontainer">Tired
<input type="range" min="1" max="5" value="1" class="slider" id="myRange">Wide Awake
</div>
<div class="slidecontainer">Scared
<input type="range" min="1" max="5" value="1" class="slider" id="myRange">Fearless
</div>
<form action="/action_page.php">
<input type="text" name="fname" placeholder="No content 1"><br>
<input type="text" name="lname" placeholder="No content 2"><br>
</form>
<form action="/projects/upload" method="get" enctype="multipart/form- data">Select image to upload:
<!--{{ csrf_field() }} -->
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Upload Image" name="submit">
</form>
</body>
</html>
php xml laravel
Why do you use GET instead of POST as method?
– common sense
yesterday
When I originally set it up using the POST method it did not work when I submitted the form, the GET method worked.
– Matthew Richardson
yesterday
1
You have to uncomment the csrf field{{ csrf_field() }or change it to @csrf.multipart/form-datamust have no space.
– common sense
yesterday
There are a few things in your code who has to be addressed. You calling the upload() method withaction="/projects/upload"I suppose this works because the error is thrown, but you don't pass the $request to the method. How do you store the XML file on your filesystem?
– common sense
yesterday
I hadn't included a show method within my controller, the POST method now works. With regards to where the XML file is stored, it is in my public folder.
– Matthew Richardson
yesterday
|
show 2 more comments
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I am trying to parse the following xml and keep on running into the same error message "Unable to parse XML from string", please see the below error message.
protected function resolveXmlObject($xml): Document
{
if (! $xml) {
throw new InvalidContentException('Unable to parse XML from string.');
}
return $this->document->setContent($xml);
}
I am new to using xml and am unsure what the issue is with the code that I have provided. If someone could point me in the right direction as to what I am doing wrong that would be greatly appreciated.
Controller
use OrchestraParserXmlFacade as XmlParser;
public function upload()
{
$xml = XmlParser::load(asset('xml/data.xml'));
$user = $xml->parse([
'id' => ['uses' => 'programme::id'],
'name' => ['uses' => 'programme.name'],
]);
return view ('projects.upload', compact('user'));
}
XML
<?xml version="1.0" encoding=”UTF-8”?>
<programme data>
<title>Programme Data</title>
<programme id="1">
<programme 1>
<name>A nightmare on Elm Street</name>
<image path>../images/Elm Street.jpg</image path>
<mood>Scared</mood>
</programme 1></programme>
View
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<h1>Moodslider</h1>
<div class="box">
<td style="text-align: center; vertical-align: middle;">
</div>
<div class="slidecontainer">Agitated
<input type="range" min="1" max="5" value="1" class="slider" id="myRange">Calm
</div>
<div class="slidecontainer">Happy
<input type="range" min="1" max="5" value="1" class="slider" id="myRange">Sad
</div>
<div class="slidecontainer">Tired
<input type="range" min="1" max="5" value="1" class="slider" id="myRange">Wide Awake
</div>
<div class="slidecontainer">Scared
<input type="range" min="1" max="5" value="1" class="slider" id="myRange">Fearless
</div>
<form action="/action_page.php">
<input type="text" name="fname" placeholder="No content 1"><br>
<input type="text" name="lname" placeholder="No content 2"><br>
</form>
<form action="/projects/upload" method="get" enctype="multipart/form- data">Select image to upload:
<!--{{ csrf_field() }} -->
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Upload Image" name="submit">
</form>
</body>
</html>
php xml laravel
I am trying to parse the following xml and keep on running into the same error message "Unable to parse XML from string", please see the below error message.
protected function resolveXmlObject($xml): Document
{
if (! $xml) {
throw new InvalidContentException('Unable to parse XML from string.');
}
return $this->document->setContent($xml);
}
I am new to using xml and am unsure what the issue is with the code that I have provided. If someone could point me in the right direction as to what I am doing wrong that would be greatly appreciated.
Controller
use OrchestraParserXmlFacade as XmlParser;
public function upload()
{
$xml = XmlParser::load(asset('xml/data.xml'));
$user = $xml->parse([
'id' => ['uses' => 'programme::id'],
'name' => ['uses' => 'programme.name'],
]);
return view ('projects.upload', compact('user'));
}
XML
<?xml version="1.0" encoding=”UTF-8”?>
<programme data>
<title>Programme Data</title>
<programme id="1">
<programme 1>
<name>A nightmare on Elm Street</name>
<image path>../images/Elm Street.jpg</image path>
<mood>Scared</mood>
</programme 1></programme>
View
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<h1>Moodslider</h1>
<div class="box">
<td style="text-align: center; vertical-align: middle;">
</div>
<div class="slidecontainer">Agitated
<input type="range" min="1" max="5" value="1" class="slider" id="myRange">Calm
</div>
<div class="slidecontainer">Happy
<input type="range" min="1" max="5" value="1" class="slider" id="myRange">Sad
</div>
<div class="slidecontainer">Tired
<input type="range" min="1" max="5" value="1" class="slider" id="myRange">Wide Awake
</div>
<div class="slidecontainer">Scared
<input type="range" min="1" max="5" value="1" class="slider" id="myRange">Fearless
</div>
<form action="/action_page.php">
<input type="text" name="fname" placeholder="No content 1"><br>
<input type="text" name="lname" placeholder="No content 2"><br>
</form>
<form action="/projects/upload" method="get" enctype="multipart/form- data">Select image to upload:
<!--{{ csrf_field() }} -->
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Upload Image" name="submit">
</form>
</body>
</html>
php xml laravel
php xml laravel
edited yesterday
Ross Wilson
15k22539
15k22539
asked yesterday
Matthew Richardson
266
266
Why do you use GET instead of POST as method?
– common sense
yesterday
When I originally set it up using the POST method it did not work when I submitted the form, the GET method worked.
– Matthew Richardson
yesterday
1
You have to uncomment the csrf field{{ csrf_field() }or change it to @csrf.multipart/form-datamust have no space.
– common sense
yesterday
There are a few things in your code who has to be addressed. You calling the upload() method withaction="/projects/upload"I suppose this works because the error is thrown, but you don't pass the $request to the method. How do you store the XML file on your filesystem?
– common sense
yesterday
I hadn't included a show method within my controller, the POST method now works. With regards to where the XML file is stored, it is in my public folder.
– Matthew Richardson
yesterday
|
show 2 more comments
Why do you use GET instead of POST as method?
– common sense
yesterday
When I originally set it up using the POST method it did not work when I submitted the form, the GET method worked.
– Matthew Richardson
yesterday
1
You have to uncomment the csrf field{{ csrf_field() }or change it to @csrf.multipart/form-datamust have no space.
– common sense
yesterday
There are a few things in your code who has to be addressed. You calling the upload() method withaction="/projects/upload"I suppose this works because the error is thrown, but you don't pass the $request to the method. How do you store the XML file on your filesystem?
– common sense
yesterday
I hadn't included a show method within my controller, the POST method now works. With regards to where the XML file is stored, it is in my public folder.
– Matthew Richardson
yesterday
Why do you use GET instead of POST as method?
– common sense
yesterday
Why do you use GET instead of POST as method?
– common sense
yesterday
When I originally set it up using the POST method it did not work when I submitted the form, the GET method worked.
– Matthew Richardson
yesterday
When I originally set it up using the POST method it did not work when I submitted the form, the GET method worked.
– Matthew Richardson
yesterday
1
1
You have to uncomment the csrf field
{{ csrf_field() } or change it to @csrf. multipart/form-data must have no space.– common sense
yesterday
You have to uncomment the csrf field
{{ csrf_field() } or change it to @csrf. multipart/form-data must have no space.– common sense
yesterday
There are a few things in your code who has to be addressed. You calling the upload() method with
action="/projects/upload" I suppose this works because the error is thrown, but you don't pass the $request to the method. How do you store the XML file on your filesystem?– common sense
yesterday
There are a few things in your code who has to be addressed. You calling the upload() method with
action="/projects/upload" I suppose this works because the error is thrown, but you don't pass the $request to the method. How do you store the XML file on your filesystem?– common sense
yesterday
I hadn't included a show method within my controller, the POST method now works. With regards to where the XML file is stored, it is in my public folder.
– Matthew Richardson
yesterday
I hadn't included a show method within my controller, the POST method now works. With regards to where the XML file is stored, it is in my public folder.
– Matthew Richardson
yesterday
|
show 2 more comments
1 Answer
1
active
oldest
votes
up vote
0
down vote
The call to asset('xml/data.xml') does not give you a file or an internal path, it gives you the public URL to the file inside the public folder. Try it with public_path('xml/data.xml').
https://laravel.com/docs/5.7/helpers#method-public-path
E.g.
$xml = XmlParser::load(public_path('xml/data.xml'));
Hi, I have added this to my code and the same error message still persists.
– Matthew Richardson
yesterday
Is the file you want inside thepublicfolder? There are different helpers if it's instorageorappetc.
– newUserName02
yesterday
Yes, it is in the public folder
– Matthew Richardson
yesterday
What doespublic_path('xml/data.xml')return? Adddd(public_path('xml/data.xml'))above the line where you load the XML. Add the result to you question.
– common sense
yesterday
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
The call to asset('xml/data.xml') does not give you a file or an internal path, it gives you the public URL to the file inside the public folder. Try it with public_path('xml/data.xml').
https://laravel.com/docs/5.7/helpers#method-public-path
E.g.
$xml = XmlParser::load(public_path('xml/data.xml'));
Hi, I have added this to my code and the same error message still persists.
– Matthew Richardson
yesterday
Is the file you want inside thepublicfolder? There are different helpers if it's instorageorappetc.
– newUserName02
yesterday
Yes, it is in the public folder
– Matthew Richardson
yesterday
What doespublic_path('xml/data.xml')return? Adddd(public_path('xml/data.xml'))above the line where you load the XML. Add the result to you question.
– common sense
yesterday
add a comment |
up vote
0
down vote
The call to asset('xml/data.xml') does not give you a file or an internal path, it gives you the public URL to the file inside the public folder. Try it with public_path('xml/data.xml').
https://laravel.com/docs/5.7/helpers#method-public-path
E.g.
$xml = XmlParser::load(public_path('xml/data.xml'));
Hi, I have added this to my code and the same error message still persists.
– Matthew Richardson
yesterday
Is the file you want inside thepublicfolder? There are different helpers if it's instorageorappetc.
– newUserName02
yesterday
Yes, it is in the public folder
– Matthew Richardson
yesterday
What doespublic_path('xml/data.xml')return? Adddd(public_path('xml/data.xml'))above the line where you load the XML. Add the result to you question.
– common sense
yesterday
add a comment |
up vote
0
down vote
up vote
0
down vote
The call to asset('xml/data.xml') does not give you a file or an internal path, it gives you the public URL to the file inside the public folder. Try it with public_path('xml/data.xml').
https://laravel.com/docs/5.7/helpers#method-public-path
E.g.
$xml = XmlParser::load(public_path('xml/data.xml'));
The call to asset('xml/data.xml') does not give you a file or an internal path, it gives you the public URL to the file inside the public folder. Try it with public_path('xml/data.xml').
https://laravel.com/docs/5.7/helpers#method-public-path
E.g.
$xml = XmlParser::load(public_path('xml/data.xml'));
edited yesterday
answered yesterday
newUserName02
46838
46838
Hi, I have added this to my code and the same error message still persists.
– Matthew Richardson
yesterday
Is the file you want inside thepublicfolder? There are different helpers if it's instorageorappetc.
– newUserName02
yesterday
Yes, it is in the public folder
– Matthew Richardson
yesterday
What doespublic_path('xml/data.xml')return? Adddd(public_path('xml/data.xml'))above the line where you load the XML. Add the result to you question.
– common sense
yesterday
add a comment |
Hi, I have added this to my code and the same error message still persists.
– Matthew Richardson
yesterday
Is the file you want inside thepublicfolder? There are different helpers if it's instorageorappetc.
– newUserName02
yesterday
Yes, it is in the public folder
– Matthew Richardson
yesterday
What doespublic_path('xml/data.xml')return? Adddd(public_path('xml/data.xml'))above the line where you load the XML. Add the result to you question.
– common sense
yesterday
Hi, I have added this to my code and the same error message still persists.
– Matthew Richardson
yesterday
Hi, I have added this to my code and the same error message still persists.
– Matthew Richardson
yesterday
Is the file you want inside the
public folder? There are different helpers if it's in storage or app etc.– newUserName02
yesterday
Is the file you want inside the
public folder? There are different helpers if it's in storage or app etc.– newUserName02
yesterday
Yes, it is in the public folder
– Matthew Richardson
yesterday
Yes, it is in the public folder
– Matthew Richardson
yesterday
What does
public_path('xml/data.xml') return? Add dd(public_path('xml/data.xml')) above the line where you load the XML. Add the result to you question.– common sense
yesterday
What does
public_path('xml/data.xml') return? Add dd(public_path('xml/data.xml')) above the line where you load the XML. Add the result to you question.– common sense
yesterday
add a comment |
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53401572%2ferror-when-trying-to-parse-xml-using-laravel%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Why do you use GET instead of POST as method?
– common sense
yesterday
When I originally set it up using the POST method it did not work when I submitted the form, the GET method worked.
– Matthew Richardson
yesterday
1
You have to uncomment the csrf field
{{ csrf_field() }or change it to @csrf.multipart/form-datamust have no space.– common sense
yesterday
There are a few things in your code who has to be addressed. You calling the upload() method with
action="/projects/upload"I suppose this works because the error is thrown, but you don't pass the $request to the method. How do you store the XML file on your filesystem?– common sense
yesterday
I hadn't included a show method within my controller, the POST method now works. With regards to where the XML file is stored, it is in my public folder.
– Matthew Richardson
yesterday