Emmett Shear wrote: > I can remove the byte order markers myself pretty easily; is there any > way to force libxml to output empty tags in <foo></foo> form?
Hi Emmett, I think what you want to manipulate is xmlSaveNoEmptyTags[1] sadly, I don't know enough C and can't find anything similar to try to copy. All that said, Trans' hack is a good one: $ irb --prompt xmp libxml2.irb && cat output.xml require 'rubygems' # if installed via Gems # => true require 'xml/libxml' # => true doc = XML::Document.new() # => <?xml version="1.0"?> doc.root = XML::Node.new('root_node') # => <root_node/> root = doc.root # => <root_node/> root << elem1 = XML::Node.new('elem1', "") # => <elem1></elem1> elem1['attr1'] = 'val1' # => "val1" elem1['attr2'] = 'val2' # => "val2" root << elem2 = XML::Node.new('elem2', "") # => <elem2></elem2> elem2['attr1'] = 'val1' # => "val1" elem2['attr2'] = 'val2' # => "val2" root << elem3 = XML::Node.new('elem3', "") # => <elem3></elem3> # Namespace hack to reduce the numer of times XML:: is typed include XML # => Object root << elem7 = Node.new('foo') # => <foo/> 1.upto(10) {|i| elem7 << n = Node.new("bar#{i}", "") } # => 1 format = true # => true doc.save('output.xml', format) # => 352 <?xml version="1.0"?> <root_node> <elem1 attr1="val1" attr2="val2"></elem1> <elem2 attr1="val1" attr2="val2"></elem2> <elem3></elem3> <foo> <bar1></bar1> <bar2></bar2> <bar3></bar3> <bar4></bar4> <bar5></bar5> <bar6></bar6> <bar7></bar7> <bar8></bar8> <bar9></bar9> <bar10></bar10> </foo> </root_node> HTH, Keith 1. http://xmlsoft.org/html/libxml-globals.html#xmlSaveNoEmptyTags _______________________________________________ libxml-devel mailing list libxml-devel@rubyforge.org http://rubyforge.org/mailman/listinfo/libxml-devel