2011-06-28 6 views
4
<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE Report SYSTEM "https://abc.mycompany.com/abc/processingreports/processeddtd/abcd_1_8.dtd"> 
<Report Name="Daily TRANSACTIONS" 
     Version="1.8" 
     xmlns="https://abc.mycompany.com/abc/processingreports/processeddtd/abcd_1_8.dtd" 
     OrgID="ABC_PQR" StartDate="2011-03-10T00:00:00+00:00" EndDate="2011-03-11T00:00:00+00:00"> 
    <Requests> 
     <Request ID="2" 
       Date="2011-03-10T00:21:14+00:00" 
       OrderNumber="1"> 
      <BillTo> 
       <FirstName /> 
      </BillTo> 
      <LineItems> 
       <LineItem Number="0"> 
        <Quantity /> 
       </LineItem> 
      </LineItems> 
     </Request> 
     <Request ID="2" 
       Date="2011-03-10T00:21:14+00:00" 
       OrderNumber="1"> 
       TransactionNumber="389958330911111"> 
      <BillTo> 
       <FirstName>A</FirstName> 
      </BillTo> 
      <LineItems> 
       <LineItem Number="0"> 
        <Quantity>1</Quantity> 
       </LineItem> 
      </LineItems> 
      <UniqueData> 
       <UniqueNumber>11111111111111111111111111111</UniqueNumber> 
      </UniqueData></Request></Requests></Report> 

Dans le fichier XML ci-dessus en utilisant Linq i juste voulez extraire OrderNumber et UniqueNumber OrderNumber = "1"LINQ to XML Lire fichier xml LINQ

Toutes les idées, suggestions pour extraire ces détails?

Je peux sélectionner des éléments de fichier ci-dessus xml mais UniqueNumber est pas associé à OrderNumber

Je cherche quelque chose ci-dessous (ignorer les lignes où UniqueNumber n'est pas présent) OrderNumber - assosicated UniqueNumber

Mise à jour Dans "requiredElements" j'attends deux numéros OrderNumber et UniqueNumber et en maintenant les valeurs associées les uns avec les autres comme 1 et 11111 et ainsi un

#region FileOpen with UTF8 Encoding 

TextReader sr = new StreamReader(cFileName, Encoding.UTF8); 
XDocument reportfile = XDocument.Load(sr, LoadOptions.SetBaseUri); 
XElement xd = XElement.Parse(reportfile.ToString()); 
sr.Close(); 


#endregion 

XNamespace ns = xd.Attribute("xmlns").Value; 

var requiredElements = (from resultquery in reportfile.Descendants() 
          select new 
          { 
          OrderNumber = resultquery.Attribute("OrderNumber"), 
          UniqueNumber= (string)resultquery.Element(AddNameSpace(ns, "UniqueNumber")), 
          } 
        ); 
+0

Ce n'est pas vraiment clair ce qui ne vous ... que voulez-vous dire par « UniqueNumber est pas associé à OrderNumber »? –

+0

Dans "requiredElements" j'attends deux Coulmns OrderNumber et UniqueNumber et ayant des valeurs associées les uns avec les autres comme 1 et 11111 et ainsi de suite. – swapneel

Répondre

10

Voici quelques-uns échantillon:

XDocument doc = XDocument.Load(@"file.xml"); 
    XNamespace df = doc.Root.Name.Namespace; 
    var results = from request in doc.Descendants(df + "Request") 
        where request.Elements(df + "UniqueData").Elements(df + "UniqueNumber").Any() 
        select new 
        { 
         ordNumber = (int)request.Attribute("OrderNumber"), 
         uniqueNumber = (decimal)request.Element(df + "UniqueData").Element(df + "UniqueNumber") 
        }; 
    foreach (var result in results) 
    { 
     Console.WriteLine("{0}-{1}", result.ordNumber, result.uniqueNumber); 
    }