Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
198 views
in Technique[技术] by (71.8m points)

Write One Xml From Other Xml in Silverlight with C#

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

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

1 Reply

0 votes
by (71.8m points)

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>

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...