Wow! I very often have to handle documents with multiple namespaces. Admittedly, I don't think that collisions between element names have ever been issue.
I think that that the problem here is not XML, it's the APIs. I have no trouble with XSLT, but my coworkers do, and if I had to carry out the task that Andrew describes, I'd probably resort to sed -i! I avoid DOM like the plague, and don't want to have a dependence on JDOM or some other API.
I work for a Java-intensive shop, but I'd recommend Groovy (a dynamic language build on top of Java). I believe there is a Python library that does similar things to the following (I'm sure Javascript does, too, but it's not an option for me). I really don't think this could be any easier.
// Here's the problem statement.
welch = """<config xmlns="http://somecomp.com">
<foo>abc</foo>
</config>
"""
// parsed into a nested plain old Java object
config = new XmlParser().parseText(welch)
// Set the value.
config.foo[0].value = 'xyz'
// Verify that this is what you wanted.
new XmlNodePrinter(preserveWhitespace: true).print(config)
-----Original Message-----
From: Andrew Welch [mailto:]
Sent: Monday, July 26, 2010 11:22 AM
To: Richard Salz
Cc: xml-dev
Subject: Re: [xml-dev] hackable xml
On 26 July 2010 13:53, Richard Salz <> wrote:
> I don't get it -- which community needs this xml-like thing? And why?
The community that just wants to read or write very simple xml files.
Given:
<config xmlns="http://somecomp.com">
<foo>abc</foo>
</config>
...and you want to update the value of <foo>, how would you do it?
Or put more realisticly, a colleague of yours knows very little about
XML and all of its related technologies, and asks you how they should
do it.
- XSLT transform
- XQuery update
- JDOM, XOM etc
- SAX parse and generate the events
- some data-binding tool (if an xsd exists)
All fairly straight forward for the xml community, but to anyone else
each of those seem like a massive overkill for such a seemingly simple
task. Perhaps there is a simple way that I've missed?
The ultimate goal of hackable xml is to make it possible to just do a
string replace of "<foo>abc</foo>" with "<foo>newValue</foo>" (which
is often what happens anyway, causing many hours of fun) and then
serialize/reparse without any issues.