Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

i have one xml file like this

<SequenceFlow>
 <FlowWriteLine> hiiii </FlowWriteLine>
</SequenceFlow> 

I wanted to create another Xml file in silverlight with C#. XDocument is using in Silverlight. Each node in this Xml equal to another word like

SequenceFlow=WorkFlow,

FlowWriteLine=WriteLine

So when i create new Xml ,it will like this

<WorkFlow>
 <WriteLine> hiii </WriteLine>
</WorkFlow>

So how can i create new Xml using Old one..pls help me ...Advance Thanks..

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
187 views
Welcome To Ask or Share your Answers For Others

1 Answer

You could simply set the node name based on the current node name. In the sample below, I have used a dictionary for replacing the node names.

You can use any other logic that you have for replacing the node names as in mapping for original to new.

XDocument doc = XDocument.Parse(@"<SequenceFlow>
    <FlowWriteLine> hiiii </FlowWriteLine>
    <NotToBeReplaced>byeee</NotToBeReplaced>
    </SequenceFlow> ");

Dictionary<string, string> replacements = new Dictionary<string, string>() { { "SequenceFlow", "Workflow" }, { "FlowWriteLine", "WriteLine" } };

foreach (XElement child in doc.Root.DescendantsAndSelf())
{
    string replacementValue = string.Empty;
    if (replacements.TryGetValue(child.Name.LocalName, out replacementValue))   
    {
        child.Name = replacementValue;
    }
}

The above gives an output as

<Workflow>
  <WriteLine> hiiii </WriteLine>
  <NotToBeReplaced>byeee</NotToBeReplaced>
</Workflow>

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...