【问题标题】:Parse XML in C#在 C# 中解析 XML
【发布时间】:2010-10-29 17:22:03
【问题描述】:

您好,我想知道如何在 C# 中解析这个简单的 XML 文件内容。我可以有多个“in”元素,并且我想使用日期、最小值、最大值和状态子值。

<out>
<in>
<id>16769</id>
<date>29-10-2010</date>
<now>12</now>
<min>12</min>
<max>23</max>
<state>2</state>
<description>enter text</description>
</in>

<in>
<id>7655</id>
<date>12-10-2010</date>
<now>1</now>
<min>1</min>
<max>2</max>
<state>0</state>
<description>enter text</description>
</in>
</out>

【问题讨论】:

    标签: c# xml parsing


    【解决方案1】:

    System.XML namespace 拥有各种用于解析、读取和写入 XML 数据的工具。顺便说一句,您的 XML 格式不正确;你有两个 &lt;out&gt; 元素,但只有一个 &lt;/out&gt; 元素。

    【讨论】:

      【解决方案2】:

      【讨论】:

        【解决方案3】:

        您需要System.XML,以XmlDocument.Load(filename) 开头。

        加载XmlDocument 后,您可以使用内置的.Net XML 对象模型从XmlDocument 级别开始根据需要向下钻取。您可以以一种非常直观的方式递归地遍历树,从每个 XmlNode 中捕获您想要的内容。

        或者(并且最好)您可以使用XPath 快速找到XmlDocument 中与特定条件匹配的所有XmlNodes - 示例here。 C# 中的一个用法示例是XmlNode.SelectNodes

        using System;
        using System.IO;
        using System.Xml;
        
        public class Sample {
        
          public static void Main() {
        
            XmlDocument doc = new XmlDocument();
            doc.Load("booksort.xml");
        
            XmlNodeList nodeList;
            XmlNode root = doc.DocumentElement;
        
            nodeList=root.SelectNodes("descendant::book[author/last-name='Austen']");
        
            //Change the price on the books.
            foreach (XmlNode book in nodeList)
            {
              book.LastChild.InnerText="15.95";
            }
        
            Console.WriteLine("Display the modified XML document....");
            doc.Save(Console.Out);
        
          }
        }
        

        【讨论】:

          【解决方案4】:
          【解决方案5】:

          这可能超出了您的预期,但值得一提...

          我讨厌解析 XML。说真的,我几乎拒绝这样做,特别是因为 .NET 可以为我做到这一点。我要做的是创建一个具有上述属性的“In”对象。您可能已经有一个,或者创建需要 60 秒。您还需要一个名为“Out”的 In 对象列表。

          然后将 XML 反序列化为对象。这只需要几行代码。这是一个例子。顺便说一句,这使得更改和重新保存数据同样容易。

          How to serialize/deserialize

          【讨论】:

            猜你喜欢
            • 2011-01-24
            • 1970-01-01
            • 2021-08-18
            • 1970-01-01
            • 2016-12-25
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多