Implement RemoveAttr method
diff --git a/etree.go b/etree.go
index 7380bda..981e9ec 100644
--- a/etree.go
+++ b/etree.go
@@ -523,6 +523,18 @@
 	return &e.Attr[len(e.Attr)-1]
 }
 
+// RemoveElement removes the given attribute. If an equal attribute does not
+// exist, nil is returned.
+func (e *Element) RemoveAttr(attr *Attr) *Attr {
+	for i, a := range e.Attr {
+		if a == *attr {
+			e.Attr = append(e.Attr[0:i], e.Attr[i+1:]...)
+			return attr
+		}
+	}
+	return nil
+}
+
 // writeTo serializes the attribute to the writer.
 func (a *Attr) writeTo(w *bufio.Writer) {
 	if a.Space != "" {
diff --git a/etree_test.go b/etree_test.go
index 0e3b80c..3674fd4 100644
--- a/etree_test.go
+++ b/etree_test.go
@@ -20,7 +20,7 @@
 	store.CreateComment("This is a comment")
 	book := store.CreateElement("book")
 	book.CreateAttrFull("", "lang", "fr")
-	book.CreateAttr("lang", "en")
+	lang := book.CreateAttr("lang", "en")
 	title := book.CreateElementFull("t", "title")
 	title.SetText("Nicholas Nickleby")
 	title.SetText("Great Expectations")
@@ -97,6 +97,14 @@
 	if book.SelectAttrValueFull("t", "missing", "unknown") != "unknown" {
 		t.Fail()
 	}
+	attr = book.RemoveAttr(lang)
+	if attr != lang {
+		t.Fail()
+	}
+	attr = book.SelectAttr("lang")
+	if attr != nil {
+		t.Fail()
+	}
 	element = book.SelectElementFull("t", "title")
 	if element != title || element.Text() != "Great Expectations" || len(element.Attr) != 0 {
 		t.Fail()