Add additional namespace to XML file
up vote
2
down vote
favorite
I am trying in PHP to add an additional namespace to the <gpx> element of an XML file. This is the existing <gpx> element (note the namespace "stunninghikes" is not included):
<?xml version="1.0" encoding="UTF-8"?>
<gpx xmlns="http://www.topografix.com/GPX/1/1"
xmlns:gpsies="https://www.gpsies.com/GPX/1/0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
creator="GPSies https://www.gpsies.com - Amden - Chapf (1296m) - Arvenb&#252;el - Vorderh&#246;hi - Gulmen (1788m) - Hinter H&#246;hi - Niederschlag"
version="1.1"
xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd https://www.gpsies.com/GPX/1/0 https://www.gpsies.com/gpsies.xsd">
<content>
(Lots more content)
</content>
</gpx>
What I would like is for the attribute xmlns:stunninghikes="https://stunninghikes.com/GPX/1/0" to be added to the <gpx> element.
I have tried numerous options of using createAttributeNS and setAttributeNS, but CANNOT get it working! This is one example of what I have tried:
$gpxDoc = new DomDocument;
$gpxDoc->load($gpxFileName);
$gpxNode = $gpxDoc->getElementsByTagName('gpx');
$gpxNode->createAttributeNS('https://stunninghikes.com/GPX/1/0', 'xmlns:stunninghikes');
$gpxDoc->appendChild($gpxNode);
Any ideas?
php xml dom
add a comment |
up vote
2
down vote
favorite
I am trying in PHP to add an additional namespace to the <gpx> element of an XML file. This is the existing <gpx> element (note the namespace "stunninghikes" is not included):
<?xml version="1.0" encoding="UTF-8"?>
<gpx xmlns="http://www.topografix.com/GPX/1/1"
xmlns:gpsies="https://www.gpsies.com/GPX/1/0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
creator="GPSies https://www.gpsies.com - Amden - Chapf (1296m) - Arvenb&#252;el - Vorderh&#246;hi - Gulmen (1788m) - Hinter H&#246;hi - Niederschlag"
version="1.1"
xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd https://www.gpsies.com/GPX/1/0 https://www.gpsies.com/gpsies.xsd">
<content>
(Lots more content)
</content>
</gpx>
What I would like is for the attribute xmlns:stunninghikes="https://stunninghikes.com/GPX/1/0" to be added to the <gpx> element.
I have tried numerous options of using createAttributeNS and setAttributeNS, but CANNOT get it working! This is one example of what I have tried:
$gpxDoc = new DomDocument;
$gpxDoc->load($gpxFileName);
$gpxNode = $gpxDoc->getElementsByTagName('gpx');
$gpxNode->createAttributeNS('https://stunninghikes.com/GPX/1/0', 'xmlns:stunninghikes');
$gpxDoc->appendChild($gpxNode);
Any ideas?
php xml dom
add a comment |
up vote
2
down vote
favorite
up vote
2
down vote
favorite
I am trying in PHP to add an additional namespace to the <gpx> element of an XML file. This is the existing <gpx> element (note the namespace "stunninghikes" is not included):
<?xml version="1.0" encoding="UTF-8"?>
<gpx xmlns="http://www.topografix.com/GPX/1/1"
xmlns:gpsies="https://www.gpsies.com/GPX/1/0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
creator="GPSies https://www.gpsies.com - Amden - Chapf (1296m) - Arvenb&#252;el - Vorderh&#246;hi - Gulmen (1788m) - Hinter H&#246;hi - Niederschlag"
version="1.1"
xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd https://www.gpsies.com/GPX/1/0 https://www.gpsies.com/gpsies.xsd">
<content>
(Lots more content)
</content>
</gpx>
What I would like is for the attribute xmlns:stunninghikes="https://stunninghikes.com/GPX/1/0" to be added to the <gpx> element.
I have tried numerous options of using createAttributeNS and setAttributeNS, but CANNOT get it working! This is one example of what I have tried:
$gpxDoc = new DomDocument;
$gpxDoc->load($gpxFileName);
$gpxNode = $gpxDoc->getElementsByTagName('gpx');
$gpxNode->createAttributeNS('https://stunninghikes.com/GPX/1/0', 'xmlns:stunninghikes');
$gpxDoc->appendChild($gpxNode);
Any ideas?
php xml dom
I am trying in PHP to add an additional namespace to the <gpx> element of an XML file. This is the existing <gpx> element (note the namespace "stunninghikes" is not included):
<?xml version="1.0" encoding="UTF-8"?>
<gpx xmlns="http://www.topografix.com/GPX/1/1"
xmlns:gpsies="https://www.gpsies.com/GPX/1/0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
creator="GPSies https://www.gpsies.com - Amden - Chapf (1296m) - Arvenb&#252;el - Vorderh&#246;hi - Gulmen (1788m) - Hinter H&#246;hi - Niederschlag"
version="1.1"
xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd https://www.gpsies.com/GPX/1/0 https://www.gpsies.com/gpsies.xsd">
<content>
(Lots more content)
</content>
</gpx>
What I would like is for the attribute xmlns:stunninghikes="https://stunninghikes.com/GPX/1/0" to be added to the <gpx> element.
I have tried numerous options of using createAttributeNS and setAttributeNS, but CANNOT get it working! This is one example of what I have tried:
$gpxDoc = new DomDocument;
$gpxDoc->load($gpxFileName);
$gpxNode = $gpxDoc->getElementsByTagName('gpx');
$gpxNode->createAttributeNS('https://stunninghikes.com/GPX/1/0', 'xmlns:stunninghikes');
$gpxDoc->appendChild($gpxNode);
Any ideas?
php xml dom
php xml dom
edited Nov 13 at 21:43
miken32
23k84671
23k84671
asked Nov 11 at 23:40
Alastair Green
287
287
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
up vote
1
down vote
accepted
You were pretty close with your attempt. You aren't allowed to manually change the xmlns attributes of the document, instead you'll get a DOMException complaining about a "Namespace Error."
What you can do is create an attribute (any attribute) and the XML document will automatically be updated to include the namespace, even if you don't append it to the document:
$gpxDoc = new DomDocument;
$gpxDoc->load($gpxFileName);
$gpxDoc->createAttributeNS('https://stunninghikes.com/GPX/1/0', 'stunninghikes:dummy');
echo $gpxDoc->saveXML();
Output:
<?xml version="1.0" encoding="UTF-8"?>
<gpx xmlns="http://www.topografix.com/GPX/1/1" xmlns:gpsies="https://www.gpsies.com/GPX/1/0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:stunninghikes="https://stunninghikes.com/GPX/1/0" creator="GPSies https://www.gpsies.com - Amden - Chapf (1296m) - Arvenb&#252;el - Vorderh&#246;hi - Gulmen (1788m) - Hinter H&#246;hi - Niederschlag" version="1.1" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd https://www.gpsies.com/GPX/1/0 https://www.gpsies.com/gpsies.xsd">
<content>
(Lots more content)
</content>
</gpx>
That's annoying. I was close! THANKS for the simple solution
– Alastair Green
Nov 14 at 5:52
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
1
down vote
accepted
You were pretty close with your attempt. You aren't allowed to manually change the xmlns attributes of the document, instead you'll get a DOMException complaining about a "Namespace Error."
What you can do is create an attribute (any attribute) and the XML document will automatically be updated to include the namespace, even if you don't append it to the document:
$gpxDoc = new DomDocument;
$gpxDoc->load($gpxFileName);
$gpxDoc->createAttributeNS('https://stunninghikes.com/GPX/1/0', 'stunninghikes:dummy');
echo $gpxDoc->saveXML();
Output:
<?xml version="1.0" encoding="UTF-8"?>
<gpx xmlns="http://www.topografix.com/GPX/1/1" xmlns:gpsies="https://www.gpsies.com/GPX/1/0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:stunninghikes="https://stunninghikes.com/GPX/1/0" creator="GPSies https://www.gpsies.com - Amden - Chapf (1296m) - Arvenb&#252;el - Vorderh&#246;hi - Gulmen (1788m) - Hinter H&#246;hi - Niederschlag" version="1.1" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd https://www.gpsies.com/GPX/1/0 https://www.gpsies.com/gpsies.xsd">
<content>
(Lots more content)
</content>
</gpx>
That's annoying. I was close! THANKS for the simple solution
– Alastair Green
Nov 14 at 5:52
add a comment |
up vote
1
down vote
accepted
You were pretty close with your attempt. You aren't allowed to manually change the xmlns attributes of the document, instead you'll get a DOMException complaining about a "Namespace Error."
What you can do is create an attribute (any attribute) and the XML document will automatically be updated to include the namespace, even if you don't append it to the document:
$gpxDoc = new DomDocument;
$gpxDoc->load($gpxFileName);
$gpxDoc->createAttributeNS('https://stunninghikes.com/GPX/1/0', 'stunninghikes:dummy');
echo $gpxDoc->saveXML();
Output:
<?xml version="1.0" encoding="UTF-8"?>
<gpx xmlns="http://www.topografix.com/GPX/1/1" xmlns:gpsies="https://www.gpsies.com/GPX/1/0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:stunninghikes="https://stunninghikes.com/GPX/1/0" creator="GPSies https://www.gpsies.com - Amden - Chapf (1296m) - Arvenb&#252;el - Vorderh&#246;hi - Gulmen (1788m) - Hinter H&#246;hi - Niederschlag" version="1.1" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd https://www.gpsies.com/GPX/1/0 https://www.gpsies.com/gpsies.xsd">
<content>
(Lots more content)
</content>
</gpx>
That's annoying. I was close! THANKS for the simple solution
– Alastair Green
Nov 14 at 5:52
add a comment |
up vote
1
down vote
accepted
up vote
1
down vote
accepted
You were pretty close with your attempt. You aren't allowed to manually change the xmlns attributes of the document, instead you'll get a DOMException complaining about a "Namespace Error."
What you can do is create an attribute (any attribute) and the XML document will automatically be updated to include the namespace, even if you don't append it to the document:
$gpxDoc = new DomDocument;
$gpxDoc->load($gpxFileName);
$gpxDoc->createAttributeNS('https://stunninghikes.com/GPX/1/0', 'stunninghikes:dummy');
echo $gpxDoc->saveXML();
Output:
<?xml version="1.0" encoding="UTF-8"?>
<gpx xmlns="http://www.topografix.com/GPX/1/1" xmlns:gpsies="https://www.gpsies.com/GPX/1/0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:stunninghikes="https://stunninghikes.com/GPX/1/0" creator="GPSies https://www.gpsies.com - Amden - Chapf (1296m) - Arvenb&#252;el - Vorderh&#246;hi - Gulmen (1788m) - Hinter H&#246;hi - Niederschlag" version="1.1" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd https://www.gpsies.com/GPX/1/0 https://www.gpsies.com/gpsies.xsd">
<content>
(Lots more content)
</content>
</gpx>
You were pretty close with your attempt. You aren't allowed to manually change the xmlns attributes of the document, instead you'll get a DOMException complaining about a "Namespace Error."
What you can do is create an attribute (any attribute) and the XML document will automatically be updated to include the namespace, even if you don't append it to the document:
$gpxDoc = new DomDocument;
$gpxDoc->load($gpxFileName);
$gpxDoc->createAttributeNS('https://stunninghikes.com/GPX/1/0', 'stunninghikes:dummy');
echo $gpxDoc->saveXML();
Output:
<?xml version="1.0" encoding="UTF-8"?>
<gpx xmlns="http://www.topografix.com/GPX/1/1" xmlns:gpsies="https://www.gpsies.com/GPX/1/0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:stunninghikes="https://stunninghikes.com/GPX/1/0" creator="GPSies https://www.gpsies.com - Amden - Chapf (1296m) - Arvenb&#252;el - Vorderh&#246;hi - Gulmen (1788m) - Hinter H&#246;hi - Niederschlag" version="1.1" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd https://www.gpsies.com/GPX/1/0 https://www.gpsies.com/gpsies.xsd">
<content>
(Lots more content)
</content>
</gpx>
answered Nov 13 at 21:41
miken32
23k84671
23k84671
That's annoying. I was close! THANKS for the simple solution
– Alastair Green
Nov 14 at 5:52
add a comment |
That's annoying. I was close! THANKS for the simple solution
– Alastair Green
Nov 14 at 5:52
That's annoying. I was close! THANKS for the simple solution
– Alastair Green
Nov 14 at 5:52
That's annoying. I was close! THANKS for the simple solution
– Alastair Green
Nov 14 at 5:52
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
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%2f53254363%2fadd-additional-namespace-to-xml-file%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