根本问题的数据:级别无效

时间:2013-12-30 14:52:45

标签: c# xml

很抱歉简单,但是这个是我的,这里是xml

<tarification cle="i54534452">
    <gamme reference="new-securite-sante">
        <tarif formule="NS1">26.12</tarif>
        <tarif formule="NS2">29.08</tarif>
    </gamme>
    <gamme reference="new-equilibre-sante">
        <tarif formule="125">32.92</tarif>
        <tarif formule="150">42.20</tarif>
        <tarif formule="200">52.04</tarif>
    </gamme>
    <gamme reference="new-full-sante">
        <tarif formule="125">36.81</tarif>
        <tarif formule="150">43.86</tarif>
        <tarif formule="200">52.07</tarif>
    </gamme>
    <gamme reference="new-performance">
        <tarif formule="125">40.47</tarif>
        <tarif formule="150">49.18</tarif>
        <tarif formule="200">55.91</tarif>
    </gamme>
</tarification>

这是代码C#

XDocument docc = XDocument.Parse(chaineXML);

var formule = docc.Descendants("tarif").Attributes("formule")
    .Select(x => x.Value).ToList();
var tarif = docc.Descendants("tarif")
    .Select(x => x.Value).ToList();

我如何获得attribute formule 以及所有元素 tarif ???它显示异常“根本问题的数据:级别无效”。

2 个答案:

答案 0 :(得分:2)

使用Elements

试试这个
XDocument myList = XDocument.Load(@"E:\a.xml");
var obj = myList
    .Elements("tarification")
    .Descendants("tarif")
    .Attributes("formule")
    .Select(s => s.Value)
    .ToList();

foreach (var item in obj)
{
    Console.WriteLine(item);
}

答案 1 :(得分:0)

我认为chaineXML字符串中有多个tarification元素,因为该元素具有键属性,这就是您遇到的问题。您不能使用XDocument.Parse来解析包含多个根级别元素的字符串

将代码的第一行更改为:

时,代码是否有效
 XDocument docc = XDocument.Parse("<ROOTELEMENT>"+chaineXML+"</ROOTELEMENT>");

这样做有效地将所有tarification元素包装到根文档元素中。