2009-06-30 4 views
0

:XML에서 요소를 재정렬하는 방법은 무엇입니까? XmlReader에 콘텐츠 다음 한

<ns0:Fields> 
    <omm:Field DataType="Utf8String" Name="ROW80_3"> 
    <omm:Utf8String> Latam News </omm:Utf8String> 
    </omm:Field> 
    <omm:Field DataType="Int32" Name="RECORDTYPE"> 
    <omm:Int32>228</omm:Int32> 
    </omm:Field> 
    <omm:Field DataType="Utf8String" Name="ROW80_4"> 
    <omm:Utf8String>ATDNEWSRUS</omm:Utf8String> 
    </omm:Field> 
    <omm:Field DataType="Utf8String" Name="ROW80_1"> 
    <omm:Utf8String>12:28 27JUN09 PRODUCT LIST</omm:Utf8String> 
    </omm:Field> 
    <omm:Field DataType="Utf8String" Name="ROW80_2"> 
    <omm:Utf8String>ATDNEWSLATAM</omm:Utf8String> 
    </omm:Field> 
    <omm:Field DataType="Utf8String" Name="BQOS"> 
    <omm:Utf8String>0</omm:Utf8String> 
    </omm:Field> 
</ns0:Fields> 

어떻게 ROW80_1에서 시작 ROW80_4에서 종료 요소를 다시 정렬 할 수 있습니다.

답변

0

XmlReader은 요소를 재정렬 할 수 없습니다. 그러나로드 할 위치 (예 : XmlDocument 등)에 따라 나중에 다시 정렬 할 수 있습니다.

0

Lucero에서 언급 한 것처럼 XmlReader 클래스를 사용하여 Xml 문서를 다시 배열 할 수는 없지만 임시 정렬 가능한 데이터 저장소 일반 사전을 사용하거나 논리적으로 문서에 포함 된 데이터를 다시 정렬하거나 모든 요소가 재정렬됩니다. 당신이 XLinq를 사용할 수있는 경우

4

는 상황이 훨씬 더 간단하게 :

XDocument doc = XDocument.Parse(@"..."); 

var children = doc.Elements().Single().Elements().OrderBy(element => (string) element.Attribute("Name")); 

var newRoot = new XElement(((XNamespace) "yourNamespaceHere") + "Fields", 
new XAttribute(XNamespace.Xmlns + "nso", "yourNamespaceHere"), 
new XAttribute(XNamespace.Xmlns + "omm", "otherNamespace"), 
children); 

var newDocument = new XDocument(newRoot); 
Console.WriteLine(newDocument); 

또한 요소를 필터링 할 수 있습니다.

+0

위 답변은 +1입니다. –

관련 문제