2017-11-06 19 views
0

こんにちはすべて私のファイルです。 XMLファイルの上XMLノードの属性を読み取る方法は?

<print>  
    <part keyName="logo" fontName="" fontSize="" fontColor="" bold="" italic="" underline="" maxWidth="45" textAlign="center" isBarcode="" isImage="true"> 
     <logo>testimg.jpg</logo> 
    </part>  
    <part keyName="header" fontName="" fontSize="" fontColor="" bold="" italic="" underline="" maxWidth="45" textAlign="center" isBarcode="" isImage=""> 
     <SpaceSep>0</SpaceSep> 
     <LineSep>1</LineSep> 
     <text fontSize="20">Tax Invoice</text> 
     <LineSep>1</LineSep> 
     <text>Test Pvt Ltd</text> 
     <LineSep>1</LineSep> 
     <address/> 
     <area/> 
     <city/> 
     <state/> 
     <pin/> 
     <country/> 
     <LineSep>1</LineSep> 
     <text>Phone: </text> 
     <phone></phone> 
     <LineSep>1</LineSep> 
     <text>GSTIN: </text> 
     <gstIn></gstIn> 
     <LineSep>1</LineSep> 
    </part> 
</print> 

一部として印刷、そして子ノードとして親ルートが含まれています。 子ノードを読み込みたいのですが、それはC#の属性です。 XMLファイルにというユニークなのノード名が含まれている場合は、それらを読むことができます。しかし、すべての子ノードに同じノード名が含まれている場合、どのようにそれらを読むことができます。

+0

http://www.csharp-examples.net/xml-nodes-by-attribute-value/ @Sagarをこのリンクを参照してください –

+0

xml linqを使用:リスト部分= doc.Descendants( "部分")。ToList(); – jdweng

答えて

1

私はよくあなたの質問を理解していた場合、あなたはそのような何か行う必要があります。

//... 
using System.Linq; 
using System.Xml.Linq; 
//... 

XDocument doc = XDocument.Load(@"C:\directory\file.xml"); 
IEnumerable<XElement> partElements = doc.Root.Elements("part"); 

foreach (XElement partElement in partElements) 
{ 
    // read attribute value 
    string keyName = partElement.Attribute("keyName")?.Value; 

    //... 

    // iterate through childnodes 
    foreach (XElement partChildElement in partElement.Elements()) 
    { 
     // check the name 
     if (partChildElement.Name == "SpaceSep") 
     { 
      int value = (int)partChildElement; // casting from element to its [int] content 

      // do stuff for <SpaceSep> element 
     } 
     else if (partChildElement.Name == "text") 
     { 
      string text = (string)partChildElement; // casting from element to its [string] content 

      // do stuff for <text> element 
     } 

     // and so on for all possible node name 
    } 
} 
関連する問題