在openxml中的元素内搜索元素值

时间:2018-12-03 17:30:02

标签: c# asp.net openxml

我试图根据两个搜索条件从xml文档中检索一个值,一个条件在工作,但第二个条件在不工作,

     string ind =
        (string)(from number in numberDoc.Root.Elements(w + "abstractNum")
                 where (string)number.Attribute(w + "abstractNumId") == 
                            ((string)(
                            from numbering in numberDoc.Root.Elements(w + "num")
                            where (string)numbering.Attribute(w + "numId") == "5"
                            select numbering.Element(w + "abstractNumId")
                            ).First().Attribute(w + "val"))
                &&  (string)number.Element(w + "lvl").Attribute(w + "ilvl") =="0"
                 //.Element(w + "lvl").Attribute(w + "ilvl") == "2"
                 select number.Element(w + "lvl").Element(w + "numFmt")
           ).First().Attribute(w + "val");

xml文件内容:

-<w:abstractNum w:abstractNumId="5">

<w:nsid w:val="25195CAD"/>

<w:multiLevelType w:val="multilevel"/>

<w:tmpl w:val="0BDE91FC"/>

<w:name w:val="a5703ef3-945f-4acd-beb2-2691d874a074"/>


-<w:lvl w:ilvl="0">

<w:start w:val="1"/>

<w:numFmt w:val="bullet"/>

<w:lvlRestart w:val="0"/>

<w:lvlText w:val="·"/>

<w:lvlJc w:val="left"/>


-<w:pPr>


-<w:tabs>

<w:tab w:val="num" w:pos="720"/>

</w:tabs>

<w:ind w:hanging="720" w:left="721"/>

</w:pPr>


-<w:rPr>

<w:rFonts w:hint="default" w:hAnsi="Symbol" w:ascii="Symbol"/>

<w:b w:val="0"/>

<w:i w:val="0"/>

<w:caps w:val="0"/>

<w:strike w:val="0"/>

<w:dstrike w:val="0"/>

<w:vanish w:val="0"/>

<w:color w:val="auto"/>

<w:sz w:val="24"/>

<w:u w:val="none"/>

<w:vertAlign w:val="baseline"/>

</w:rPr>

</w:lvl>


-<w:lvl w:ilvl="1">

<w:start w:val="1"/>

<w:numFmt w:val="bullet"/>

<w:lvlRestart w:val="0"/>

<w:lvlText w:val="·"/>

<w:lvlJc w:val="left"/>


-<w:pPr>


-<w:tabs>

<w:tab w:val="num" w:pos="1440"/>

</w:tabs>

<w:ind w:hanging="720" w:left="1441"/>

</w:pPr>


-<w:rPr>

<w:rFonts w:hint="default" w:hAnsi="Symbol" w:ascii="Symbol"/>

<w:b w:val="0"/>

<w:i w:val="0"/>

<w:caps w:val="0"/>

<w:strike w:val="0"/>

<w:dstrike w:val="0"/>

<w:vanish w:val="0"/>

<w:color w:val="auto"/>

<w:sz w:val="24"/>

<w:u w:val="none"/>

<w:vertAlign w:val="baseline"/>

</w:rPr>

</w:lvl>


-<w:lvl w:ilvl="2">

<w:start w:val="1"/>

<w:numFmt w:val="bullet"/>

<w:lvlRestart w:val="0"/>

<w:lvlText w:val="·"/>

<w:lvlJc w:val="left"/>


-<w:pPr>


-<w:tabs>

<w:tab w:val="num" w:pos="2160"/>

</w:tabs>

<w:ind w:hanging="720" w:left="2161"/>

</w:pPr>


-<w:rPr>

<w:rFonts w:hint="default" w:hAnsi="Symbol" w:ascii="Symbol"/>

<w:b w:val="0"/>

<w:i w:val="0"/>

<w:caps w:val="0"/>

<w:strike w:val="0"/>

<w:dstrike w:val="0"/>

<w:vanish w:val="0"/>

<w:color w:val="auto"/>

<w:sz w:val="24"/>

<w:u w:val="none"/>

<w:vertAlign w:val="baseline"/>

</w:rPr>

</w:lvl>


-<w:lvl w:ilvl="3">

<w:start w:val="1"/>

<w:numFmt w:val="bullet"/>

<w:lvlRestart w:val="0"/>

<w:lvlText w:val="·"/>

<w:lvlJc w:val="left"/>


-<w:pPr>


-<w:tabs>

<w:tab w:val="num" w:pos="2880"/>

</w:tabs>

<w:ind w:hanging="720" w:left="2881"/>

</w:pPr>


-<w:rPr>

<w:rFonts w:hint="default" w:hAnsi="Symbol" w:ascii="Symbol"/>

<w:b w:val="0"/>

<w:i w:val="0"/>

<w:caps w:val="0"/>

<w:strike w:val="0"/>

<w:dstrike w:val="0"/>

<w:vanish w:val="0"/>

<w:color w:val="auto"/>

<w:sz w:val="24"/>

<w:u w:val="none"/>

<w:vertAlign w:val="baseline"/>

</w:rPr>

</w:lvl>


-<w:lvl w:ilvl="4">

<w:start w:val="1"/>

<w:numFmt w:val="bullet"/>

<w:lvlRestart w:val="0"/>

<w:lvlText w:val="·"/>

<w:lvlJc w:val="left"/>


-<w:pPr>


-<w:tabs>

<w:tab w:val="num" w:pos="3600"/>

</w:tabs>

<w:ind w:hanging="720" w:left="3601"/>

</w:pPr>


-<w:rPr>

<w:rFonts w:hint="default" w:hAnsi="Symbol" w:ascii="Symbol"/>

<w:b w:val="0"/>

<w:i w:val="0"/>

<w:caps w:val="0"/>

<w:strike w:val="0"/>

<w:dstrike w:val="0"/>

<w:vanish w:val="0"/>

<w:color w:val="auto"/>

<w:sz w:val="24"/>

<w:u w:val="none"/>

<w:vertAlign w:val="baseline"/>

</w:rPr>

</w:lvl>


-<w:lvl w:ilvl="5">

<w:start w:val="1"/>

<w:numFmt w:val="bullet"/>

<w:lvlRestart w:val="0"/>

<w:lvlText w:val="·"/>

<w:lvlJc w:val="left"/>


-<w:pPr>


-<w:tabs>

<w:tab w:val="num" w:pos="4320"/>

</w:tabs>

<w:ind w:hanging="720" w:left="4321"/>

</w:pPr>


-<w:rPr>

<w:rFonts w:hint="default" w:hAnsi="Symbol" w:ascii="Symbol"/>

<w:b w:val="0"/>

<w:i w:val="0"/>

<w:caps w:val="0"/>

<w:strike w:val="0"/>

<w:dstrike w:val="0"/>

<w:vanish w:val="0"/>

<w:color w:val="auto"/>

<w:sz w:val="24"/>

<w:u w:val="none"/>

<w:vertAlign w:val="baseline"/>

</w:rPr>

</w:lvl>


-<w:lvl w:ilvl="6">

<w:start w:val="1"/>

<w:numFmt w:val="bullet"/>

<w:lvlRestart w:val="0"/>

<w:lvlText w:val="·"/>

<w:lvlJc w:val="left"/>


-<w:pPr>


-<w:tabs>

<w:tab w:val="num" w:pos="5040"/>

</w:tabs>

<w:ind w:hanging="720" w:left="5041"/>

</w:pPr>


-<w:rPr>

<w:rFonts w:hint="default" w:hAnsi="Symbol" w:ascii="Symbol"/>

<w:b w:val="0"/>

<w:i w:val="0"/>

<w:caps w:val="0"/>

<w:strike w:val="0"/>

<w:dstrike w:val="0"/>

<w:vanish w:val="0"/>

<w:color w:val="auto"/>

<w:sz w:val="24"/>

<w:u w:val="none"/>

<w:vertAlign w:val="baseline"/>

</w:rPr>

</w:lvl>


-<w:lvl w:ilvl="7">

<w:start w:val="1"/>

<w:numFmt w:val="none"/>

<w:lvlRestart w:val="0"/>

<w:suff w:val="nothing"/>

<w:lvlText w:val=""/>

<w:lvlJc w:val="left"/>


-<w:pPr>


-<w:tabs>

<w:tab w:val="num" w:pos="0"/>

</w:tabs>

<w:ind w:left="1" w:firstLine="0"/>

</w:pPr>


-<w:rPr>

<w:rFonts w:hint="default" w:hAnsi="Symbol" w:ascii="Symbol"/>

<w:b w:val="0"/>

<w:i w:val="0"/>

<w:caps w:val="0"/>

<w:strike w:val="0"/>

<w:dstrike w:val="0"/>

<w:vanish w:val="0"/>

<w:color w:val="auto"/>

<w:sz w:val="22"/>

<w:u w:val="none"/>

<w:vertAlign w:val="baseline"/>

</w:rPr>

</w:lvl>


-<w:lvl w:ilvl="8">

<w:start w:val="1"/>

<w:numFmt w:val="none"/>

<w:lvlRestart w:val="0"/>

<w:suff w:val="nothing"/>

<w:lvlText w:val=""/>

<w:lvlJc w:val="left"/>


-<w:pPr>


-<w:tabs>

<w:tab w:val="num" w:pos="0"/>

</w:tabs>

<w:ind w:left="1" w:firstLine="0"/>

</w:pPr>


-<w:rPr>

<w:rFonts w:hint="default" w:hAnsi="Symbol" w:ascii="Symbol"/>

<w:b w:val="0"/>

<w:i w:val="0"/>

<w:caps w:val="0"/>

<w:strike w:val="0"/>

<w:dstrike w:val="0"/>

<w:vanish w:val="0"/>

<w:color w:val="auto"/>

<w:sz w:val="22"/>

<w:u w:val="none"/>

<w:vertAlign w:val="baseline"/>

</w:rPr>

</w:lvl>

</w:abstractNum>
如果我比较&&后的

where子句有效,因为我将它比较为“ 0”而不是“ 2”,因为element(w +“ lvl”)。Attribut(w +“ ilvl”)仅在第一次出现。 我如何遍历所有w:lvl元素。

0 个答案:

没有答案