나는 여기에, 모든 "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 = "";
}
하지만, 내가 가지고있는,이 CSS를 수정하지 않습니다 조상 "크로스 탭"및 "스타일"(아래 xml) :
<crosstab name="Crosstab1" refQuery="Query1">
<crosstabSuppress type="rows"/>
<style>
<CSS value="border-collapse:collapse;font-family:'Times New Roman'"/>
어떻게하면됩니까? 감사!
내가 사용하는 대신, 그것을 해요 동안'XE .Attribute ("value"). Value = "";', xe.Attribute ("value") 대신 이것을 사용할 수 있습니까? 코드가 손상되지 않으면. 전체 속성을 제거하여 xml을 작게 만듭니다. –
그걸 시도했지만 Cognos 보고서가 손상되었습니다 (XML은 본질적으로 Cognos 보고서 임). 고맙습니다! 그건 그렇고, 지금 나는 그들 모두 (CSS)를 얻지 못하고있다. 조건을 만족시키는 CSS가 몇 개 있으며, 조상으로 "크로스 탭"과 "스타일"을 가지고 있지만 조상도 마찬가지다. 다른 말로하면, 조상으로 ** 단지 "크로스 탭"과 "스타일"이있는 모든 CSS를 제거하는 조건을 설정하는 방법을 찾고 있습니다. 어떤 아이디어입니까? – MariusD
* where * 절에서 사용할 메소드를 작성하여 요소를 보낼 수 있습니다. 이 메소드에서 element가 "style"과 "crosstab"을 모두 가지고 있는지 확인한 다음, element.Ancestors(). (e => e.Name! = "style"|| e.Name! = "crosstab" 그런 식으로. 대소 문자를 무시할 수도 있습니다. (XElement.Name이 올바른 속성인지 기억이 안나지만 찾을 수있을 것 같습니다.) –