无法使用 XmlDocument 访问 xml 文件中的<样式>

本文关键字:样式 文件 xml XmlDocument 访问 | 更新日期: 2023-09-27 18:32: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> 

无法使用 XmlDocument 访问 xml 文件中的<样式>

很可能所有其他节点都有一些非空命名空间(请注意,空前缀并不意味着"没有命名空间"(。人们需要查看XML以获得更好的答案。

是的,您的所有节点都将"如何使用 XPath 忽略命名空间"设置为默认命名空间,因此没有节点将其作为前缀。如果您想了解更多信息 - 单击"xml-namespaces"标签了解详细信息。否则,请使用以下内容来忽略命名空间,如何忽略带有 XPath 的命名空间或带有命名空间前缀的前缀节点名称,就像你对layouts一个所做的那样:

XmlNode styleNode = node.SelectSingleNode("rep:style", nsmgr);