2011-08-28 7 views
0

코드 :XML 조각을 저장하는 방법?

var readerSettings = new XmlReaderSettings { ConformanceLevel = ConformanceLevel.Fragment }; 
     using (var reader = XmlReader.Create(inputz, readerSettings)) 
     { 
      while (reader.Read()) 
      { 
       using (var fragmentReader = reader.ReadSubtree()) 
       { 
        if (fragmentReader.Read()) 
        { 
         var fragment = XNode.ReadFrom(fragmentReader) as XElement; 

무엇의 출력 :

<sys> 
     <id>FSB</id> 
     <label>FSB</label> 
     <value>266</value> 
    </sys> 
    <sys> 
     <id>CPU</id> 
     <label>speed</label> 
     <value>2930</value> 
    </sys> 
대신 문자열로 "값"을 기록하도록

어떻게 내가 그것을 바꿀 것 ? 266,2930

감사

+0

전체 XML 코드 조각을 문자열로 변환 하시겠습니까? 아니면 일부 노드를 검색 하시겠습니까? 예 : '가치'? 'sys'노드로 작업하는 경우에는 값을 표시/비교할 때까지 XML로 유지하는 것이 가장 좋습니다. –

+0

표시된 코드 섹션은 실제로 아무 것도 출력하지 않습니다. XML을 읽고 변수에 저장합니다. 당신은 우리에게 출력을 생성하는 라인을 주어야 할 것입니다 ... – Stobor

+0

나는 첫 번째 게시물을 변경 :) 다시 봐. – Csharpz

답변

1

잘 명백한 대답은 문자열로 변환하는 것입니다 -

var stringFragment = fragment.ToString(); 

또는, 필요한 경우,

var fragment = (XNode.ReadFrom(fragmentReader) as XElement).ToString(); 

100 % 확신 할 수는 없지만 XML 스 니펫을 문자열로 반환합니다.

편집 이제 질문이 업데이트되었는지, 좀 더 많은 정보를 제공 할 수 있습니다. 각각 fragment은 사실 sys 노드라고 가정합니다.

먼저 value 노드를 가져온 다음 '값'(즉 내용)을 검색해야합니다.

var valueNode = fragment.Element("value"); 
var content = valueNode.Value; 
+0

추가 정보를 보내 주셔서 감사 합니다만, MSDN을 기웃 거리며 찾아내는 방법을 알게되었습니다 : reader.ReadToFollowing ("value"); port.Write (reader.ReadElementContentAsString() + ","); 이것이 성능면에서 가장 좋은 방법입니까? 그렇지 않으면 아마도 그렇게 중요하지 않습니다. – Csharpz

1

것 같아요 것 : 그래서 출력은 같다

var fragment = (XNode.ReadFrom(fragmentReader)).ToString(); 
관련 문제