Inserting and updating time spans in XML
Your code seems very procedural - you're worrying about implementing how things will be done before you think about what those things are and how you'd like to use them.  You don't have any properties, just methods, which I don't particularly like.

From what I understand you want to write a reusable wrapper from some XML, that's going to fit in a consistent format.  Do you have a class that represents that object?

public TagElement
{
    private XElement tagXml
    public string Name
    public DateTime LastClocked
    public DateTime TotalClocked
}


Now I'd simply make each of those properties point into the private XML object get / set their values.

public TagElement(string name, DateTime initialValue)
{        
    tagXml = new XElement("Tag", 
                 new XAttribute("Name", name),
                 new XElement("LastClocked", initialValue),
                 new XElement("TotalClocked", initialValue));
}

public DateTime LastClocked
{
    get
    {
        return tagXml.Descendents("LastClocked").Single().Value;
    }
    set
    {
        tagXml.Descendents("LastClocked").Single() = value;
    }
}


You can still have a Save method that persists the XElement to a file.  You probably also want a collection class that wraps the individual TagElements.

public TagCollection
{
    public List&lt;TagElement&gt; TagElements { get; set; }
}


So you can then use

var collection = new TagCollection("myFile.xml");
// constructor for TagCollection needs to parse the XML, and create TagElements

var fooElement = collection.TagElements.Single(tag =&gt; tag.Name == "foo");
fooElement.LastClocked = DateTime.Now;

collection.TagElements.ForEach(tag =&gt; tag.TotalClocked = DateTime.Now);


In summary, prefer to use properties to get and set values than using methods.  Abstract away the XML so that when you're using the class you do not know or care that it is being persisted to XML.