Search code examples
c#xmllinqxelement

How do I work with an XML tag within a string?


I'm working in Microsoft Visual C# 2008 Express.

Let's say I have a string and the contents of the string is: "This is my <myTag myTagAttrib="colorize">awesome</myTag> string."

I'm telling myself that I want to do something to the word "awesome" - possibly call a function that does something called "colorize".

What is the best way in C# to go about detecting that this tag exists and getting that attribute? I've worked a little with XElements and such in C#, but mostly to do with reading in and out XML files.

Thanks!

-Adeena


Solution

  • Another solution:

    var myString = "This is my <myTag myTagAttrib='colorize'>awesome</myTag> string.";
    try
    {
        var document = XDocument.Parse("<root>" + myString + "</root>");
        var matches = ((System.Collections.IEnumerable)document.XPathEvaluate("myTag|myTag2")).Cast<XElement>();
        foreach (var element in matches)
        {
            switch (element.Name.ToString())
            {
                case "myTag":
                    //do something with myTag like lookup attribute values and call other methods
                    break;
                case "myTag2":
                    //do something else with myTag2
                    break;
            }
        }
    }
    catch (Exception e)
    {
        //string was not not well formed xml
    }
    

    I also took into account your comment to Dabblernl where you want parse multiple attributes on multiple elements.