public void SaveHyperlink(HyperlinkItem hyperlink)
        {
            XElement offline = XElement.Load(xmlFile);


            if (hyperlinkExists(hyperlink.Id, offline))
            {
                // update the hyperlink.
                XElement hyperlinkElement = offline.Element(itemCollectionElementName).Elements(itemElementName)
                                            .Where(xh => (string)xh.Attribute(HLINK_ATTR_ID).Value == hyperlink.Id).FirstOrDefault();

                hyperlinkElement.Attribute(HLINK_ATTR_TOPIC).Value    = hyperlink.Topic;
                hyperlinkElement.Attribute(HLINK_ATTR_URL).Value      = hyperlink.Url;
                hyperlinkElement.Element(HLINK_ELEMENT_PHRASES).Value = hyperlink.DelimitedKeyPhraseList;
                hyperlinkElement.Element(HLINK_ATTR_DESC).ReplaceNodes(new XCData(hyperlink.Description));
            }
            else
            {
                // create a new hyperlink
                XElement xHyperlink = new XElement(itemElementName);

                xHyperlink.Add(new XAttribute(HLINK_ATTR_ID, hyperlink.Id));
                xHyperlink.Add(new XAttribute(HLINK_ATTR_TOPIC, hyperlink.Topic));
                xHyperlink.Add(new XAttribute(HLINK_ATTR_URL, hyperlink.Url));
                xHyperlink.Add(new XAttribute(HLINK_ATTR_STATE, hyperlink.State.ToString()));
                xHyperlink.Add(new XElement(HLINK_ELEMENT_PHRASES, hyperlink.DelimitedKeyPhraseList));
                xHyperlink.Add(new XElement(HLINK_ATTR_DESC, new XCData(hyperlink.Description)));

                offline.Element(itemCollectionElementName).Add(xHyperlink);
            }

            offline.Save(xmlFile);
        }
        public void RemoveHyperlink(HyperlinkItem hyperlink)
        {
            XElement offline = XElement.Load(xmlFile);

            if (hyperlinkExists(hyperlink.Id, offline))
            {
                offline.Element(itemCollectionElementName).Elements(itemElementName)
                .Where(hyp =>
                       (string)hyp.Attribute(HLINK_ATTR_ID).Value == hyperlink.Id)
                .Remove();
                offline.Save(xmlFile);
            }
        }
        public HyperlinkItem GetHyperlink(string id)
        {
            XElement offline = XElement.Load(xmlFile);

            XElement hyperlinkElement = offline.Element(itemCollectionElementName).Elements(itemElementName)
                                        .Where(xh => (string)xh.Attribute(HLINK_ATTR_ID).Value == id).FirstOrDefault();

            HyperlinkItem hyperlink = new HyperlinkItem((string)hyperlinkElement.Attribute(HLINK_ATTR_ID), (string)hyperlinkElement.Element(HLINK_ELEMENT_PHRASES).Value)
            {
                Topic       = (string)hyperlinkElement.Attribute(HLINK_ATTR_TOPIC),
                Url         = (string)hyperlinkElement.Attribute(HLINK_ATTR_URL),
                State       = stateFromString((string)hyperlinkElement.Attribute(HLINK_ATTR_STATE)),
                Description = (string)hyperlinkElement.Element(HLINK_ATTR_DESC)
            };

            return(hyperlink);
        }