0

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 结束。

4

3 回答 3

5

如果你可以使用 Xlinq,事情就变得简单多了:

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); 

您还可以过滤掉元素。

于 2009-07-01T03:21:08.663 回答
0

XmlReader不能重新排列元素。但是,根据您将它们加载到的位置(例如XmlDocument等),您可以在之后重新排列它们。

于 2009-06-30T16:11:20.513 回答
0

正如 Lucero 所提到的,您无法使用 XmlReader 类重新排列 Xml 文档,但是可以通过使用临时可排序数据存储通用字典或使用所有元素重新创建文档来逻辑地重新排列文档中包含的数据重新排列。

于 2009-07-01T02:56:36.857 回答