Hi,

This is probably a simple question for all you gurus....
But I am still learning XML processing.

I have a function as follows to create a list of parts from an XML file (this 
is based on a solution I found on the web).

  static List<Part> LoadParts(string partDataFile)
        {
            using (Stream stream = GetResourceStream(partDataFile))
            using (XmlReader xmlRdr = new XmlTextReader(stream))
                return
                    (from partElem in 
XDocument.Load(xmlRdr).Element("parts").Elements("part")
                     select Part.CreatePart(
                        (string)partElem.Attribute("prt"),
                        (string)partElem.Attribute("prtDesc"),
                        (string)partElem.Attribute("comment")
                        )).ToList();
        }


My XML file is like this:
<?xml version="1.0" encoding="utf-8" ?>
<parts>
  <part prt="92201546"  prtDesc="a long part desc" comment="This can be a 
comment" />
  <part prt="90116842"  prtDesc="wingnutfluegelmutter" comment="no comment" />
  <part prt="91503604"  prtDesc="trim panel a" comment="" />
</parts>

This works fine.  However, I now need to extend my XML file to include some 
"sub elements":

<?xml version="1.0" encoding="utf-8" ?>
<parts>
  <part prt="92201546"  prtDesc="a long part desc" comment="This can be a 
comment">
    <stores>
      <store>6045B</store>
    </stores>
    <pous>
      <pou>GA-T108R</pou>
    </pous>
  </part>
  <part prt="90116842"  prtDesc="wingnutfluegelmutter" comment="no comment" >
    <stores>
      <store>6045B</store>
    </stores>
    <pous>
      <pou>GA-F211L</pou>
    </pous>
  </part>
  <part prt="91503604"  prtDesc="trim panel a" comment="" >
    <stores>
      <store>6072B</store>
      <store>5081K</store>
      <store>8147N</store>
      <store>PLAS2</store>
    </stores>
    <pous>
      <pou>GA-F102L</pou>
      <pou>GA-T108R</pou>
      <pou>BN-D04R</pou>
    </pous>
  </part>
</parts>

The new create function looks like this:

public static Part CreateCompletePart(
            string partNumber,
            string partDesc,
            string comment,
            List<string> stores,
            List<string> ulocs)
        {
            return new Part
            {
                PartNumber = partNumber,
                PartDesc = partDesc,
                Comment = comment,
                StoreLocs = stores,
                POUs = ulocs
            };


Can anyone point me in the direction of how I read the XML file and return the 
List<string> into the function?
i.e. my LoadParts needs to look something like:

(from partElem in XDocument.Load(xmlRdr).Element("parts").Elements("part")
                     select Part.CreatePart(
                        (string)partElem.Attribute("prt"),
                        (string)partElem.Attribute("prtDesc"),
                        (string)partElem.Attribute("comment"),
    (List<string>)partElem.Attribute("stores"),
    (List<string>)partElem.Attribute(pous)
                        )).ToList();

But obviously, this doesn't work.

MICHAEL KING

Reply via email to