2

すべての「CSS」要素「値」の値を「」に設定しようとしています。コードは次のとおりです。

XDocument doc = XDocument.Load(fi.FullName);
XNamespace rep = "http://developer.cognos.com/schemas/report/8.0/";

List<XElement> cssElements =
    (from e in doc.Root.DescendantsAndSelf(rep + "CSS")
     where
     (
         (e.Attribute("value") != null)
     )
     select e).ToList();

//modify Attribute in elements
foreach (XElement xe in cssElements)
{
    xe.Attribute("value").Value = "";
}

しかし、先祖として「クロスタブ」と「スタイル」(以下のxml)を持つこの1つのCSSを変更したくありません。

<crosstab name="Crosstab1" refQuery="Query1">
<crosstabSuppress type="rows"/>
<style>
    <CSS value="border-collapse:collapse;font-family:'Times New Roman'"/>  

どうやってやるの?ありがとう!

4

1 に答える 1

1

私があなたを正しく理解していれば、おそらく次のようなものです:

...

List<XElement> cssElements =
    (from e in doc.Root.DescendantsAndSelf(rep + "CSS")
        where
        (
            (e.Attribute("value") != null) && !(e.Ancestors(rep + "style").Any() && e.Ancestors(rep + "crosstab").Any())
        )
        select e).ToList();

...

これをwhere-clause に追加しただけです:

&& !(e.Ancestors(rep + "style").Any() && e.Ancestors(rep + "crosstab").Any())
于 2012-05-03T16:19:04.093 に答える