2017-11-06 3 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 
    } 
} 
관련 문제