C# 如何在c中读取非结构化xml#

C# 如何在c中读取非结构化xml#,c#,xml,C#,Xml,我想阅读非结构化的XML。子元件的数量可以增加或减少。在C#中读取此类XML的最佳方式是什么。下面是示例XML <?xml version="1.0" encoding="UTF-8"?> <entities> <entity> <type>Organization</type> <relevance>0.918192</relevance> <sen

我想阅读非结构化的XML。子元件的数量可以增加或减少。在C#中读取此类XML的最佳方式是什么。下面是示例XML

<?xml version="1.0" encoding="UTF-8"?>
<entities>
    <entity>
        <type>Organization</type>
        <relevance>0.918192</relevance>
        <sentiment>
            <type>neutral</type>
        </sentiment>
        <count>1</count>
        <text>Wheelers Hill Secondary College Deb Ball</text>
    </entity>
    <entity>
        <type>Organization</type>
        <relevance>0.621802</relevance>
        <sentiment>
            <type>positive</type>
            <score>0.789945</score>
        </sentiment>
        <count>1</count>
        <text>Greensborough College</text>
        <disambiguated>
            <name>Greensborough College</name>
            <subType>School</subType>
            <website>http://www.greensc.vic.edu.au/</website>
            <dbpedia>http://dbpedia.org/resource/Greensborough_College
            </dbpedia>
            <freebase>http://rdf.freebase.com/ns/m.0bp2jy</freebase>
        </disambiguated>
    </entity>
</entities>

组织机构
0.918192
中立的
1.
惠勒山中学德布鲍尔分校
组织机构
0.621802
积极的
0.789945
1.
格林斯堡学院
格林斯堡学院
学校
http://www.greensc.vic.edu.au/
http://dbpedia.org/resource/Greensborough_College
http://rdf.freebase.com/ns/m.0bp2jy

在C#中读取XML的最佳方法是使用LINQ。您可以使用下面的代码查询XML并获取所需的元素

首先创建一个扩展方法来检查元素是否存在并返回其值

public static string CheckAndGetElementValue(this XElement parent, string elementName, string defaultValue = null) 
{
    var el = parent.Element(elementName);
    if(el != null)
    {
         return el.Value;
    }
    else
    {
         return defaultValue;
    }
}
然后在获取元素值时使用扩展方法:

XDocument xDoc = XDocument.Load("filename");
var listitems = (from el in xDoc.Descendants("entities")
                where el.Element("entity").CheckAndGetElementValue("type") == "Organization"
                select el);

我建议对linqtoxml(XDocument)进行一些研究,我确实搜索过,但这些都是读取具有常量子元素数量的结构化XML文件的方法。我想读取属性数量不恒定的XML您的场景是什么?您想读取一些属性/元素吗?所有这些属性/元素,您想如何使用读取的数据?最佳方式是什么意思?您在关注性能吗?我想阅读所有XML元素。