Результаты поиска
Regex отклонение совпадений из-за Instr
Каков самый простой способ сделать функцию типа "instring" с помощью regex? Например, как я могу отклонить целую строку из-за наличия одного символа, такого как : ? Например:
this-хорошоthere:is- не в порядке из-за:
Более практично, как я могу сопоставить следующую строку:
//foo/bar/baz[1]/ns:foo2/@attr/text()
Для любого теста узла на xpath, который не включает пространство имен?
(/)?(/)([^:/]+)
Будет соответствовать тестам узла, но включает префикс пространства имен, который делает его неисправным.
XPath и пространства имен по умолчанию
Что стоит за XPath и поддержкой пространств имен? Разве XPath как спецификация предшествует пространствам имен? Если у меня есть документ, в котором элементам было дано пространство имен по умолчанию:
<foo xmlns="uri" />
Похоже, что некоторые из процессорных библиотек XPath не распознают //foo из-за пространства имен, а другие-нет. Моя команда думала о том, чтобы добавить префикс пространства имен с помощью регулярных выражений к XPath (вы можете добавить префикс пространства имен через XmlNameTable), но это кажется хрупким, поскольку XPath-такой гибкий язык, когда речь заходит о тестах узлов.
Есть ли стандарт, который применяется к этому?
Мой подход немного хаковат, но он, кажется, работает нормально; я удаляю объявление xmlns с помощью поиска / замены, а затем применяю XPath.
string readyForXpath = Regex.Replace(xmldocument, "xmlns=\".+\"", String.Empty );
Это справедливый подход или кто-то решил это по-другому?
XPath и выбор одного узла
Я использую XPath в .NET для разбора документа XML, по следующим линиям::
XmlNodeList lotsOStuff = doc.SelectNodes("//stuff");
foreach (XmlNode stuff in lotsOStuff) {
XmlNode stuffChild = stuff.SelectSingleNode("//stuffChild");
// ... etc
}
Проблема заключается в том, что запрос XPath для stuffChild всегда возвращает дочерний элемент первого элемента stuff , а не rest. Может ли XPath не использоваться для запроса к отдельному XMLElement ?