Возможно, проблема в вашем текущем инструменте, поскольку он может не поддерживать некоторый синтаксис XPath.
Вы можете попробовать lxml.html для анализа того же HTML-документа:
from lxml import html
source = """
Phrases
this
Phrases
this
test test
not this
"""
dom = html.fromstring(source)
dom.xpath(".//div[@class='phrase' and ./parent::div[@class!='extras']]")
Вывод:
[, ] # Two elements found
или
dom.xpath(".//div[@class='phrase' and ./parent::div[@class!='extras']]/text()")
Вывод:
['this', 'this']
Использование:
using System.Configuration;
using System.Web.Configuration;
...
CompilationSection configSection =
(CompilationSection) ConfigurationManager.GetSection( "system.web/compilation" );
Можно затем проверить configSection.Debug
свойство.
ПОДСКАЗКА: если необходимо знать, как получить значение из файла конфигурации, регистрировать machine.config файл Ваш \Windows\Microsoft.net\Framework\<version>\CONFIG
папка. Там Вы видите, как все обработчики разделов конфигурации определяются. После того как Вы знаете название обработчика конфигураций (в этом случае, CompilationSection), можно искать его в документах .NET.
Простой способ проверить, работаете ли Вы в режиме отладки, состоит в том, чтобы использовать HttpContext. Свойство IsDebuggingEnabled. Это получает свой ответ от атрибута отладки элемента компиляции, который является тем же самым, которое Вы пытаетесь сделать.
В конце концов, можно всегда загружаться Web.config
файл в XmlDocument
и используйте XPath
запрос для обнаружения!
XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("~/Web.config"));
doc.SelectSingleNode("/configuration/system.web/compilation/@debug");
Однако я предлагаю, чтобы Вы использовали Configuration.GetSection
метод для решения.
CompilationSection section =
Configuration.GetSection("system.web/compilation") as CompilationSection;
bool debug = section != null && section.Debug;
Наклоните Вас, просто загружают файл как регулярный XML-файл и используют XPath для получения узлов?
Попытайтесь использовать ConfigurationManager. Метод GetSection.