Forcing xml.etree to output “unused” namespaces
I'm trying to create shibboleth configuration files using xml.etree in python, and I'm having problems with it omitting namespace assignments when it output the finished document.
I'm pretty sure that it's the problem described in Outputting an “unused” XML namespace using ElementTree
I declare them...
namespaces =
'resolver': 'urn:mace:shibboleth:2.0:resolver',
'xsi': 'http://www.w3.org/2001/XMLSchema-instance',
'pc': 'urn:mace:shibboleth:2.0:resolver:pc',
'ad': 'urn:mace:shibboleth:2.0:resolver:ad',
'dc': 'urn:mace:shibboleth:2.0:resolver:dc',
'enc': 'urn:mace:shibboleth:2.0:attribute:encoder',
'sec': 'urn:mace:shibboleth:2.0:security',
for prefix, uri in namespaces.iteritems():
ET.register_namespace(prefix, uri)
If I print out the namespaces that have been defined for the document...
print json.dumps( ET._namespace_map, indent=True )
I see my namespaces there..
"urn:mace:shibboleth:2.0:resolver:pc": "pc",
"http://schemas.xmlsoap.org/wsdl/": "wsdl",
"urn:mace:shibboleth:2.0:resolver:ad": "ad",
"urn:mace:shibboleth:2.0:resolver": "resolver",
"http://www.w3.org/1999/xhtml": "html",
"http://www.w3.org/1999/02/22-rdf-syntax-ns#": "rdf",
"urn:mace:shibboleth:2.0:security": "sec",
"urn:mace:shibboleth:2.0:attribute:encoder": "enc",
"http://www.w3.org/2001/XMLSchema": "xs",
"http://www.w3.org/2001/XMLSchema-instance": "xsi",
"http://www.w3.org/XML/1998/namespace": "xml",
"urn:mace:shibboleth:2.0:resolver:dc": "dc"
When I write the document to a file, or dump it to stdout, it omits the "enc" and "pc" namespaces. Like the other question, "enc" and "pc" aren't used to qualify elements, but are used in qualifying attribute values. I could force them to show up by adding them to the document manually...
root.set("xmlns:enc", "urn:mace:shibboleth:2.0:attribute:encoder")
root.set("xmlns:pc", "urn:mace:shibboleth:2.0:resolver:pc")
It feels like I shouldn't have to do that.
Is there a way to force xml.etree to output all of the defined namespaces when you output a document?
Liam
python xml xml-namespaces elementtree shibboleth
add a comment |
I'm trying to create shibboleth configuration files using xml.etree in python, and I'm having problems with it omitting namespace assignments when it output the finished document.
I'm pretty sure that it's the problem described in Outputting an “unused” XML namespace using ElementTree
I declare them...
namespaces =
'resolver': 'urn:mace:shibboleth:2.0:resolver',
'xsi': 'http://www.w3.org/2001/XMLSchema-instance',
'pc': 'urn:mace:shibboleth:2.0:resolver:pc',
'ad': 'urn:mace:shibboleth:2.0:resolver:ad',
'dc': 'urn:mace:shibboleth:2.0:resolver:dc',
'enc': 'urn:mace:shibboleth:2.0:attribute:encoder',
'sec': 'urn:mace:shibboleth:2.0:security',
for prefix, uri in namespaces.iteritems():
ET.register_namespace(prefix, uri)
If I print out the namespaces that have been defined for the document...
print json.dumps( ET._namespace_map, indent=True )
I see my namespaces there..
"urn:mace:shibboleth:2.0:resolver:pc": "pc",
"http://schemas.xmlsoap.org/wsdl/": "wsdl",
"urn:mace:shibboleth:2.0:resolver:ad": "ad",
"urn:mace:shibboleth:2.0:resolver": "resolver",
"http://www.w3.org/1999/xhtml": "html",
"http://www.w3.org/1999/02/22-rdf-syntax-ns#": "rdf",
"urn:mace:shibboleth:2.0:security": "sec",
"urn:mace:shibboleth:2.0:attribute:encoder": "enc",
"http://www.w3.org/2001/XMLSchema": "xs",
"http://www.w3.org/2001/XMLSchema-instance": "xsi",
"http://www.w3.org/XML/1998/namespace": "xml",
"urn:mace:shibboleth:2.0:resolver:dc": "dc"
When I write the document to a file, or dump it to stdout, it omits the "enc" and "pc" namespaces. Like the other question, "enc" and "pc" aren't used to qualify elements, but are used in qualifying attribute values. I could force them to show up by adding them to the document manually...
root.set("xmlns:enc", "urn:mace:shibboleth:2.0:attribute:encoder")
root.set("xmlns:pc", "urn:mace:shibboleth:2.0:resolver:pc")
It feels like I shouldn't have to do that.
Is there a way to force xml.etree to output all of the defined namespaces when you output a document?
Liam
python xml xml-namespaces elementtree shibboleth
Just ran into the same problem myself and couldn't find a solution better than yourroot.set
workaround! Some kwarg option likeforce=True
forregister_namespace
would be much nicer.
– eupharis
Nov 18 '15 at 19:31
Have you tried to use lxml instead of ElementTree? lxml does not remove namespace declarations. See stackoverflow.com/a/46110195/407651.
– mzjn
Nov 14 '18 at 7:03
add a comment |
I'm trying to create shibboleth configuration files using xml.etree in python, and I'm having problems with it omitting namespace assignments when it output the finished document.
I'm pretty sure that it's the problem described in Outputting an “unused” XML namespace using ElementTree
I declare them...
namespaces =
'resolver': 'urn:mace:shibboleth:2.0:resolver',
'xsi': 'http://www.w3.org/2001/XMLSchema-instance',
'pc': 'urn:mace:shibboleth:2.0:resolver:pc',
'ad': 'urn:mace:shibboleth:2.0:resolver:ad',
'dc': 'urn:mace:shibboleth:2.0:resolver:dc',
'enc': 'urn:mace:shibboleth:2.0:attribute:encoder',
'sec': 'urn:mace:shibboleth:2.0:security',
for prefix, uri in namespaces.iteritems():
ET.register_namespace(prefix, uri)
If I print out the namespaces that have been defined for the document...
print json.dumps( ET._namespace_map, indent=True )
I see my namespaces there..
"urn:mace:shibboleth:2.0:resolver:pc": "pc",
"http://schemas.xmlsoap.org/wsdl/": "wsdl",
"urn:mace:shibboleth:2.0:resolver:ad": "ad",
"urn:mace:shibboleth:2.0:resolver": "resolver",
"http://www.w3.org/1999/xhtml": "html",
"http://www.w3.org/1999/02/22-rdf-syntax-ns#": "rdf",
"urn:mace:shibboleth:2.0:security": "sec",
"urn:mace:shibboleth:2.0:attribute:encoder": "enc",
"http://www.w3.org/2001/XMLSchema": "xs",
"http://www.w3.org/2001/XMLSchema-instance": "xsi",
"http://www.w3.org/XML/1998/namespace": "xml",
"urn:mace:shibboleth:2.0:resolver:dc": "dc"
When I write the document to a file, or dump it to stdout, it omits the "enc" and "pc" namespaces. Like the other question, "enc" and "pc" aren't used to qualify elements, but are used in qualifying attribute values. I could force them to show up by adding them to the document manually...
root.set("xmlns:enc", "urn:mace:shibboleth:2.0:attribute:encoder")
root.set("xmlns:pc", "urn:mace:shibboleth:2.0:resolver:pc")
It feels like I shouldn't have to do that.
Is there a way to force xml.etree to output all of the defined namespaces when you output a document?
Liam
python xml xml-namespaces elementtree shibboleth
I'm trying to create shibboleth configuration files using xml.etree in python, and I'm having problems with it omitting namespace assignments when it output the finished document.
I'm pretty sure that it's the problem described in Outputting an “unused” XML namespace using ElementTree
I declare them...
namespaces =
'resolver': 'urn:mace:shibboleth:2.0:resolver',
'xsi': 'http://www.w3.org/2001/XMLSchema-instance',
'pc': 'urn:mace:shibboleth:2.0:resolver:pc',
'ad': 'urn:mace:shibboleth:2.0:resolver:ad',
'dc': 'urn:mace:shibboleth:2.0:resolver:dc',
'enc': 'urn:mace:shibboleth:2.0:attribute:encoder',
'sec': 'urn:mace:shibboleth:2.0:security',
for prefix, uri in namespaces.iteritems():
ET.register_namespace(prefix, uri)
If I print out the namespaces that have been defined for the document...
print json.dumps( ET._namespace_map, indent=True )
I see my namespaces there..
"urn:mace:shibboleth:2.0:resolver:pc": "pc",
"http://schemas.xmlsoap.org/wsdl/": "wsdl",
"urn:mace:shibboleth:2.0:resolver:ad": "ad",
"urn:mace:shibboleth:2.0:resolver": "resolver",
"http://www.w3.org/1999/xhtml": "html",
"http://www.w3.org/1999/02/22-rdf-syntax-ns#": "rdf",
"urn:mace:shibboleth:2.0:security": "sec",
"urn:mace:shibboleth:2.0:attribute:encoder": "enc",
"http://www.w3.org/2001/XMLSchema": "xs",
"http://www.w3.org/2001/XMLSchema-instance": "xsi",
"http://www.w3.org/XML/1998/namespace": "xml",
"urn:mace:shibboleth:2.0:resolver:dc": "dc"
When I write the document to a file, or dump it to stdout, it omits the "enc" and "pc" namespaces. Like the other question, "enc" and "pc" aren't used to qualify elements, but are used in qualifying attribute values. I could force them to show up by adding them to the document manually...
root.set("xmlns:enc", "urn:mace:shibboleth:2.0:attribute:encoder")
root.set("xmlns:pc", "urn:mace:shibboleth:2.0:resolver:pc")
It feels like I shouldn't have to do that.
Is there a way to force xml.etree to output all of the defined namespaces when you output a document?
Liam
python xml xml-namespaces elementtree shibboleth
python xml xml-namespaces elementtree shibboleth
asked Jul 3 '14 at 14:59
uglycat5uglycat5
214
214
Just ran into the same problem myself and couldn't find a solution better than yourroot.set
workaround! Some kwarg option likeforce=True
forregister_namespace
would be much nicer.
– eupharis
Nov 18 '15 at 19:31
Have you tried to use lxml instead of ElementTree? lxml does not remove namespace declarations. See stackoverflow.com/a/46110195/407651.
– mzjn
Nov 14 '18 at 7:03
add a comment |
Just ran into the same problem myself and couldn't find a solution better than yourroot.set
workaround! Some kwarg option likeforce=True
forregister_namespace
would be much nicer.
– eupharis
Nov 18 '15 at 19:31
Have you tried to use lxml instead of ElementTree? lxml does not remove namespace declarations. See stackoverflow.com/a/46110195/407651.
– mzjn
Nov 14 '18 at 7:03
Just ran into the same problem myself and couldn't find a solution better than your
root.set
workaround! Some kwarg option like force=True
for register_namespace
would be much nicer.– eupharis
Nov 18 '15 at 19:31
Just ran into the same problem myself and couldn't find a solution better than your
root.set
workaround! Some kwarg option like force=True
for register_namespace
would be much nicer.– eupharis
Nov 18 '15 at 19:31
Have you tried to use lxml instead of ElementTree? lxml does not remove namespace declarations. See stackoverflow.com/a/46110195/407651.
– mzjn
Nov 14 '18 at 7:03
Have you tried to use lxml instead of ElementTree? lxml does not remove namespace declarations. See stackoverflow.com/a/46110195/407651.
– mzjn
Nov 14 '18 at 7:03
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
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%2f24557151%2fforcing-xml-etree-to-output-unused-namespaces%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
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.
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%2f24557151%2fforcing-xml-etree-to-output-unused-namespaces%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
Just ran into the same problem myself and couldn't find a solution better than your
root.set
workaround! Some kwarg option likeforce=True
forregister_namespace
would be much nicer.– eupharis
Nov 18 '15 at 19:31
Have you tried to use lxml instead of ElementTree? lxml does not remove namespace declarations. See stackoverflow.com/a/46110195/407651.
– mzjn
Nov 14 '18 at 7:03