C# 用C语言解析XML文件#

C# 用C语言解析XML文件#,c#,xml,linq,xpath,xmlreader,C#,Xml,Linq,Xpath,Xmlreader,我有一个XML文件,由c++编写的库生成: <?xml version="1.0" encoding="UTF-8" ?> <main> <days> <day> <date>27.06.2014</date> <p/> </day> <day> <date

我有一个XML文件,由c++编写的库生成:

<?xml version="1.0" encoding="UTF-8" ?>
<main>
    <days>
        <day>
            <date>27.06.2014</date>
            <p/>
        </day>
        <day>
            <date>28.06.2014</date>
            <p>
                <short>short value</short>
                <name>name value</name>
                <type>type value</type>
                <aud>aud value</aud>
                <tr>tr value</tr>
                <added>added value</added>
            </p>
            <p>
                <short>short value</short>
                <name>name value</name>
                <type>type value</type>
                <aud>aud value</aud>
                <tr>tr value</tr>
                <added>added value</added>
            </p>
        </day>
    ...
    </days>
    <di>
        <did>
            <dayname>Пн</dayname>
            <sw>1</sw>
            <st>8:00-9:35</st>
        </did>              
        <did>
            <dayname>Вт</dayname>
            <sw>2</sw>
            <st>9:45-11:20</st>
        </did>  
    ...
    </di>
</main>

如何解析该文件,以便了解该天所属的参数,尤其是如果一天中有几个参数(在本例中为“p”),那么该如何解析该文件?为了在Internet上找到解决方案,许多人说最好使用“LINQ to XML”或“XPath”,但如何维护对象依赖性没有人说。

使用XDocument类加载XML,然后可以使用子体或元素方法遍历它

var xml = XDocument.Load("your xml string");
foreach (var day in xml.Descendants("day"))
{
    var pChildren = day.Descendants("p").ToList();
    var aretThereMorePs = pChildren.Count() > 1;
    foreach (var p in pChildren)
    {
        var shortVal = (string)p.Element("short");
        //etc
    }
}

我不知道我是否理解你所说的“如何维护对象依赖关系”是什么意思。我如何才能获得所有子节点类型“p”的某个“day”标记?。。。如果您有一个有效的XML文件。
var xml = XDocument.Load("your xml string");
foreach (var day in xml.Descendants("day"))
{
    var pChildren = day.Descendants("p").ToList();
    var aretThereMorePs = pChildren.Count() > 1;
    foreach (var p in pChildren)
    {
        var shortVal = (string)p.Element("short");
        //etc
    }
}