?
Solved

reading xml file using c#?

Posted on 2012-03-12
10
Medium Priority
?
251 Views
Last Modified: 2012-03-14
Hi,
How do I read xml file using c# so I can apply regex to remove <style> tags?
Then save it as xml file.

Basically I want to remove <style> tags but save value in between tags.

<customerid><style face="normal" font="default">D20001</style></customerid>


I want <customerid>D200001</customerid>

Do I use xmltextreader?
Can you some me an exmaple to read a file and save it as xml?

 input = Regex.Replace(input, "<style>(.|\n)*?</style>", string.Empty);
0
Comment
Question by:dkim18
  • 6
  • 4
10 Comments
 

Author Comment

by:dkim18
ID: 37711393
What I really want to do this after removing <style> tags are read the xmle file and put the value in List<string>

1) read xml file
2) remove <style> tags
3) read nodes and save them in array/list<string>
0
 
LVL 42

Expert Comment

by:Meir Rivkin
ID: 37711515
assume your xml looks something like this:

<customers>
<customerid><style face="normal" font="default">D20001</style></customerid>
<customerid><style face="normal" font="default">D20002</style></customerid>
.
.
</customers>

var list = new List<string>();
var xml  =XElement.Load("<xml_file_path");
var elements = xml.XPathSelectElements("customerid");
list = elements.Select(n=>n.Value).ToList();

Open in new window

0
 
LVL 42

Expert Comment

by:Meir Rivkin
ID: 37711520
to use the code u need to add the following namespaces:
System.Linq
System.Xml.Xpath
0
The new generation of project management tools

With monday.com’s project management tool, you can see what everyone on your team is working in a single glance. Its intuitive dashboards are customizable, so you can create systems that work for you.

 

Author Comment

by:dkim18
ID: 37711537
what happends to the<style> tag?

How do I read it  and apply the regex to remove the <style>?

I am able to read it as text, apply regex and save it.
Then read it as xml.

Wondering if I can do this by reading it as xml.
0
 
LVL 42

Expert Comment

by:Meir Rivkin
ID: 37711600
you dont need to apply regex or remove the <style> tag to get the value inside.
i made a mistake in the code, here's updated one:

var list = new List<string>();
var xml  =XElement.Load("<xml_file_path");
var elements = xml.XPathSelectElements("customerid/style");
list = elements.Select(n=>n.Value).ToList();

Open in new window

0
 
LVL 42

Accepted Solution

by:
Meir Rivkin earned 2000 total points
ID: 37711609
the xml is valid even with the <style> tags, so all you gotta do is read it into XElement object and use xpath to extract the required values.
0
 

Author Comment

by:dkim18
ID: 37711653
You are right. Don't have the remove it.

Let me try the Linq.
0
 

Author Comment

by:dkim18
ID: 37714226
one more question.
How do I loop through each record (customer)?
I want to read each customer and put it in the list<string>

<customers>
<customer>
<customerid><style face="normal" font="default">D20001</style></customerid>
<address></address>
<phones>
<phone>34343</phone>
<phone>34434</phone>
</phones>
<emails>
<email>dsdsw</email>
<email>wewe</email>
</emails>
</customer>
<customer>
<customerid><style face="normal" font="default">D20002</style></customerid>
<address></address>
<phones>
<phone>122</phone>
<phone>124</phone>
<phone>12121</phone>
</phones>
<emails>
<email>dfdfdf</email>
<email>dfdf</email>
<email>dfdfd</email>
<email>dfdfd</email>
</emails>
</customer>.
</customers>
0
 

Author Comment

by:dkim18
ID: 37714797
I get all the customer records but when I cycle through each customer record, I am getting the same first record value. I am thinking this is incorrect:

  XmlNode recNum = element.SelectSingleNode("//customers/customerid/style");      



System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument();
               xmlDoc.Load(fileName);
               XmlNodeList elements = xmlDoc.SelectNodes("//customers/customer");
               int nCount =  elements.Count;
                Debug.WriteLine(nCount);
       
       
               foreach (XmlElement element in elements)  <=== I get all the records
               {
                   Debug.WriteLine(element.InnerText);
                 
                   XmlNode recNum = element.SelectSingleNode("//customers/customerid/style");               <== but I get the same first record value here
                   string strRecNum = recNum.InnerText;                        
                             
          XmlNode email = element.SelectSingleNode("//customers/email");
                   string strEmail = email.Attributes["name"].Value;  <== but I get the same first record value here

           
               }
0
 

Author Comment

by:dkim18
ID: 37715856
Got it working.

foreach (XmlNode element in elements)
                   
               {
                   Debug.WriteLine(element.InnerText);
                 
                   XmlNode recNum = element.SelectSingleNode("customerid/style");
                                 XmlNode email = element.SelectSingleNode("email");
               
               }
0

Featured Post

Upgrade your Question Security!

Your question, your audience. Choose who sees your identity—and your question—with question security.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In my previous article (http://www.experts-exchange.com/Programming/Languages/.NET/.NET_Framework_3.x/A_4362-Serialization-in-NET-1.html) we saw the basics of serialization and how types/objects can be serialized to Binary format. In this blog we wi…
More often than not, we developers are confronted with a need: a need to make some kind of magic happen via code. Whether it is for a client, for the boss, or for our own personal projects, the need must be satisfied. Most of the time, the Framework…
This video tutorial shows you the steps to go through to set up what I believe to be the best email app on the android platform to read Exchange mail.  Get the app on your phone: The first step is to make sure you have the Samsung Email app on your …
Get the source code for a fully functional Access application shell with several popular security features that Access VBA application developers desire, but find difficult or impossible to figure out how to code. You get the source code for managi…
Suggested Courses
Course of the Month7 days, 6 hours left to enroll

594 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question