【发布时间】:2012-05-01 16:48:53
【问题描述】:
试图到达<style> 对其进行修改,但我无法获得比<layouts> 更进一步的信息,这是我的代码:
XmlDocument doc = new XmlDocument();
doc.Load(fi.FullName);
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("rep", "http://developer.cognos.com/schemas/report/8.0/");
XmlNodeList nodeList = doc.SelectNodes("descendant::rep:layouts", nsmgr);
foreach (XmlNode node in nodeList)
{
Console.WriteLine(node.Name);
//XmlNode styleNode = node.SelectSingleNode("style");
//if (styleNode != null)
// Console.WriteLine(styleNode.InnerText);
}
所以,这行得通("descendant::rep:layouts"),我可以看到(Console.WriteLine=) "layouts"。但是,如果我尝试更进一步,即使一次一个节点(descendant::rep:layouts/layout/reportPages/page/pageBody/contents/crosstab/style),列表中也没有单个节点..请帮助!!!我的最终目标是修改“CSS 样式”。
XML 文件如下(从评论中粘贴):
<report xmlns= developer.cognos.com/schemas/report/8.0/">
<queries>
<layouts> <layout> <reportPages>
<page name="Page1"> <pageBody> <contents>
<block> <contents> <block> <crosstab name="Crosstab1" refQuery="Query1">
<style>
<CSS value="border-collapse:collapse;font-family:'Times New Roman';border:0.75pt solid black" /> <defaultStyles>
</style>
【问题讨论】:
-
看起来示例 XML 丢失了...尝试重新添加它(不要忘记标记为代码)。
-
你必须使用 XmlDocument 吗? XDocument (Fx 3.5+) 更容易,尤其是命名空间。
-
在这里;不,我只需要完成工作。我将研究 XDocument...
标签: c# xml-namespaces xmldocument xmlnode