尝试转到<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>
答案 0 :(得分:0)
很可能所有其他节点都有一些非空命名空间(请注意,空前缀并不意味着“没有命名空间”)。人们需要看到XML以获得更好的答案。
是的,所有节点都将“how to ignore namespaces with XPath”设置为默认命名空间,因此没有节点将其作为前缀。如果您想了解更多信息 - 请点击“xml-namespaces”标签了解详情。否则使用以下命令忽略名称空间how to ignore namespaces with XPath或前缀带名称空间前缀的节点名称,就像你为layouts
做的那样:
XmlNode styleNode = node.SelectSingleNode("rep:style", nsmgr);