gpt4 book ai didi

.net - 如何使用 .NET 对 XML 文件进行排序?

转载 作者:数据小太阳 更新时间:2023-10-29 02:00:04 25 4
gpt4 key购买 nike

因此,您有一个第三方 Web 服务喜欢滥用 XML 并按顺序返回内容,这让您的编程变得非常痛苦。例如……

<file>
<node1>Foo</node1>
<price>4.99</price>
<node2>
<key>XX999</key>
</node2>
</file>

其中大约有 1000 个按价格排序。

如何按键值对这个 XML 文档重新排序?

我需要结果是一个排序的 XML 文件。谢谢!

编辑:.NET 2.0 版(无 LINQ)

最佳答案

以下是使用 XSLT 的方法:

假设您的数据采用这种形式 (file.xml):

<?xml version="1.0"?>
<listing>
<file>
<node1>Foo</node1>
<price>4.99</price>
<node2>
<key>XX999</key>
</node2>
</file>
<file>
<node1>Bar</node1>
<price>5.67</price>
<node2>
<key>aa743</key>
</node2>
</file>
<file>
<node1>Was</node1>
<price>5.67</price>
<node2>
<key>rr321</key>
</node2>
</file>
</listing>

此转换 (stylesheet.xsl):

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:strip-space elements="*"/>
<xsl:output method="xml" indent="yes"/>

<xsl:template match="listing">
<xsl:copy>
<xsl:apply-templates select="file">
<xsl:sort select="node2/key" data-type="text"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>

<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>

</xsl:stylesheet>

与此 .Net 代码一起使用时(需要添加 using System.Xml;):

XslCompiledTransform xslt= new XslCompiledTransform();
xslt.Load(@"c:\stylesheet.xsl");

xslt.Transform(@"C:\file.xml", @"c:\sorted.xml");

sorted.xml 中的输出结果:

<?xml version="1.0" encoding="utf-8"?>
<listing>
<file>
<node1>Bar</node1>
<price>5.67</price>
<node2>
<key>aa743</key>
</node2>
</file>
<file>
<node1>Was</node1>
<price>5.67</price>
<node2>
<key>rr321</key>
</node2>
</file>
<file>
<node1>Foo</node1>
<price>4.99</price>
<node2>
<key>XX999</key>
</node2>
</file>
</listing>

关于.net - 如何使用 .NET 对 XML 文件进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/716525/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com