c# - 使用 Linq 解析格式错误的 XML

标签 c# .net xml winforms linq

我正在尝试解析一些我认为在 .net 3.5 中使用 Linq 格式不正确的 xml,我需要从 xml 中获取数据并将数据插入变量,我一直在使用 XmlDocument 来解析 xml,非常感谢任何示例或帮助

XML——

<?xml version="1.0" encoding="UTF-8"?>
<centovacast version="2.2.4" host="my.domain.com">
<response type="success">
<message>Complete</message>
<data><row>
<field name="mount">/stream</field>
<field name="listenercount">0</field>
<field name="genre">Unspecified</field>
<field name="url">http://</field>
<field name="title"></field>
<field name="currentsong">Placebo - One Of A Kind</field>
<field name="bitrate">128</field>
<field name="sourceconnected">1</field>
<field name="serverstate">1</field>
<field name="sourcestate">1</field>
<field name="reseller">0</field>
<field name="ipaddress"></field>
<field name="port">13282</field>
<field name="proxy">0</field>
<field name="servertype">ShoutCast</field>
<field name="sourcetype">icescc</field>
</row><row><field></field></row></data></response></centovacast>

另一个问题是有时“currentsong”值可能包含特殊字符,例如! , % , ^ 等,我知道这有时会导致 xml 出现问题。

-- 我试图用来解析 XML 的代码

        XElement xml = XElement.Parse(data);

        var query = from p in xml.Elements("name")
                    select p;

        foreach (var record in query)
        {
            MessageBox.Show(String.Format("Info: {0} {1}",
                                                record.Element("url"),
                                                record.Element("title")));
        }

最佳答案

你的 LINQ 是错误的。您正在寻找一个名为 name 的元素。你没有。您有称为 field 的元素。

预计到达时间:好的,现在我正在重做,因为我对您的 XML 有了更好的了解。

  var query = from r in xml.Elements("row") 
                select r; 

您还需要查看 Attributes 集合,因为这就是 name 的含义:一个属性。以下内容来自内存,但它看起来像这样:

foreach(XElement row in query)
{
    var urlElement = row.Elements("field").Single(qe=>qe.HasAttributes && qe.Attribute("name").Value == "url");
    var titleElement = row.Elements("field").Single(qe => qe.HasAttributes && qe.Attribute("name").Value == "title");
    MessageBox.Show(String.Format("Info: {0} {1}", urlElement.Value, titleElement.Value));
}

关于c# - 使用 Linq 解析格式错误的 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13055665/

相关文章:

c# - 获取 Enumerable.First() 的 MethodInfo 与 Enumerable.OfType() 的 MethodInfo?

c# - 如何在 EF 中重用 where 子句

c# - 银光 mpeg-4

java - 如何避免 com.thoughtworks.xstream.io.StreamException : Cannot create XmlPullParser while deseriliazation?

java - 如何创建多级 xml 文件

c# - 如何触发已经运行的基于 .net 的 Windows 应用程序?

c# - 在 Asp Core 中上传时调整图像大小

.net - 确定 System.DateTime 是否为午夜的最佳方法是什么?

c# - .NET 中的 CIFS 服务器?

javascript - 谷歌表格 xml 出现问题