【问题标题】:How to read the data from string contaning XML in c#?如何在 C# 中从包含 XML 的字符串中读取数据?
【发布时间】:2012-08-17 08:13:10
【问题描述】:

我在这个问题上找到了很多答案,但他们都试图先将字符串转换为文件,然后尝试使用XmlDocument doc = new XmlDocument();解析它

我是c# 的新手。我的字符串格式是:

<a header = '0'> < row dc = '123' al = '45' msg = '1-st line'/> < row dc = '678' al = '8' msg = 'second-line'/> </a>

我正在尝试编写伪代码来解析它:

IF <a header> == 0
Then read from the second line to last line i.e. dc = 678 , al = 8, msg = second-line
ELSE read from the first line to last line i.e.  
  dc = 123 , al = 45, msg = 1-st line
 dc = 678 , al = 8, msg = second-line

之后我必须插入数据库。在应用上述条件时,什么是合适的解决方案?

【问题讨论】:

标签: c# xml visual-studio-2010 xml-parsing


【解决方案1】:

入门代码:

   XmlNode xmlNode = doc.SelectNode("/a");
   int value = xmlNode.Attributes["header"].Value;
   XmlNodes xmlNodes = xmlNode.SelectNodes("./row");
   foreach (XmlNode rowNode in XmlNodes)

【讨论】:

    【解决方案2】:

    您不必保存到文件来解析 XML。

    var xml = "<a header='0'> <row dc='123' al='45' msg='1-st line'/> <row dc='678' al='8' msg='second-line'/> </a>";
    var doc = XElement.Parse(xml);
    var list = from x in doc.Descendants("row")
                select new 
                {
                    dc = (int)x.Attribute("dc"),
                    al = (int)x.Attribute("al"),
                    msg = (string)x.Attribute("msg")
                };
    

    这个简单的示例将为您提供一个匿名对象列表,然后您可以轻松地将其插入数据库。

    【讨论】:

    • 我强烈支持使用 Linq to XML
    猜你喜欢
    • 2010-11-15
    • 1970-01-01
    • 2014-12-08
    • 1970-01-01
    • 1970-01-01
    • 2015-10-23
    • 2012-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多