2013-02-18 3 views
0

아래의 XML 파일에서 C#으로 섹션을 읽고 싶습니다.XML 파일에서 특정 노드 추출하기

<?xml version="1.0" encoding="utf-8" > 
<DataSet> 
<xs:schema id="NewDataSet" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> 
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"> 
<xs:complexType> 
<xs:choice minOccurs="0" maxOccurs="unbounded"> 
<xs:element name="Table"> 
<xs:complexType> 
<xs:sequence> 
    <xs:element name="Column1" type="xs:string" minOccurs="0" /> 
    </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
    </xs:choice> 
    </xs:complexType> 
    </xs:element> 
    </xs:schema> 
<diffgr:diffgram xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> 
<NewDataSet> 
<Table diffgr:id="Table1" msdata:rowOrder="0"> 
    <Column1><Properties><Property>..... 

Column1 노드 아래의 노드를 추출하고 싶습니다. Properties 노드는 Property 개의 노드가 많으므로 Properties 노드와 모든 Property 노드가 필요합니다.

C#에서 노드를 가져 오는 가장 쉽고 효율적인 방법을 알려주십시오.

+0

:

당신이 이런 식으로 그렇게 할 수있는 모든 속성 노드를 반복 할 경우

. 어디서 붙어 있니? Linq-to-XML은 아마도 가장 쉬운 것입니다 – sehe

+0

XMLNodelist를 사용하여 XML 노드를 반복 해 보았습니다.하지만 가장 쉽고 효율적으로 사용하고 싶습니다 ... XML로 linq에서 어떻게 처리 될지 샘플을 제공 할 수 있습니까? – Varun

+0

일반적으로 지금 사용하고있는 코드의 요지를 보여 주어야 사람들이 조금씩 적응할 수 있습니다. – sehe

답변

0

당신은 당신이 원하는 노드를 선택하기 위해 문자열 다음 XPath 식을 구문 분석하는 Linq에 - 투 - XML ​​클래스를 사용할 수 있습니다

XElement doc = XElement.Parse(s); //where s is a string containing the XML 
var properties = doc.XPathSelectElements("//Column1/Properties"); 

지금 properties 원하는 노드의 열거가 포함되어 있습니다. 당신이 시도 무엇

foreach(var pp in properties) 
{ 
    foreach(var p in pp.Elements("Property")) 
    { 
     //do something 
    } 
} 
+0

XMLDocument 객체에서로드 할 속성을 XElement로 변환 할 수 있습니까? ? 나는 XMLDocument를 반환하는 함수를 가지고 있는데, 나는 속성 객체에서 원하는 것을 얻었으므로 xlement.outerxml.ToString()으로 변환하고 docXML.LoadXml (xelementvariable.OuterXml)과 같은 xmldocumnet 객체를로드하려고한다. ToString()); 그리고 – Varun

+0

값을 돌려주었습니다. – Varun