C# xdocument read from element and put the value into string

混江龙づ霸主 提交于 2020-01-07 03:07:36

问题


I have a problem. This is the first time i work with a xml document in c#

I have a XML document like this:

  <root>
    <GLOBAL>
        <copy>@srcdir@c:\test1\test.txt, @destdir@C:\test1\test.txt</copy>
    </GLOBAL>
  </root>

Now i want to make an application in c# that loads the xml (done using xdocument), you chose an option (in this case global) and then it gets the copy element, and copie's the files listed in this element.

I have the copy function working, loading the xml is done, but getting the srcdir and destdir in an variable is a problem.

Any one which can help me getting on the right track?

Kind regards,


回答1:


Using Linq to Xml you could do this.

    XDocument doc = XDocument.Load(filepath);       
    var copyitems = doc.Descendants("GLOBAL")   // Read all descendants     
        .Select(s=> 
            {
                var splits = s.Value.Split(new string[] {"@srcdir@", "@destdir@"}, StringSplitOptions.RemoveEmptyEntries); // split the string to separate source and destination.
                return new { Source = splits[0].Replace(",",""), Destination = splits[1].Replace(",","")};
            })
        .ToList();

Now you can read source and destination as...

    foreach(var copy in copyitems)
    {
        Console.WriteLine("{0}- {1}", copy.Source, copy.Destination);
    } 

Output:

c:\test1\test.txt - C:\test1\test.txt

Check this Demo




回答2:


Maybe You should try to do something like this :

<copy src="c:\test1\test.txt" dest="C:\test1\test.txt"/>

And get attribut instead.



来源:https://stackoverflow.com/questions/36865982/c-sharp-xdocument-read-from-element-and-put-the-value-into-string

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!