XPath в XML-документе с пространством имен

У меня есть этот документ XML с пространствами имен, и я хочу извлечь некоторые узлы с помощью XPath.

Вот документ:

  5 T1   15 T15   

Каким будет выражение XPath, если я хочу извлечь все элементы «anyType» с помощью xsi: type = «Document»?

Я пробовал это:

 //anyType[@xsi:type="Document"] 

и он не работает:

Если вы используете C #, вам нужно указать пространство имен для элемента anyType в XPath:

 var xml = new XmlDocument(); xml.LoadXml( "your xml" ); var names = new XmlNamespaceManager( xml.NameTable ); names.AddNamespace( "xsi", "http://www.w3.org/2001/XMLSchema-instance" ); names.AddNamespace( "a", "http://tempuri.org/" ); var nodes = xml.SelectNodes( "//a:anyType[@xsi:type='Document']", names ); 

я думаю что

 //anyType[namespace-uri() = "http://www.w3.org/2001/XMLSchema-instance"][local-name() = "type"] 

Сделай то, что хочешь.

Таким образом, вам не нужно указывать пространство имен:

 XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml("your xml"); XmlNode node = xmlDoc.SelectSingleNode("/*[local-name() = 'anyType']"); XmlNode nodeToImport = xmlDoc2.ImportNode(node, true); xmlDoc2.AppendChild(nodeToImport); 

Имел почти ту же проблему, я забыл добавить правильное пространство имен для xsi: type ( http://www.w3.org/2001/XMLSchema-instance ) использовал http://www.w3.org/2001/XMLSchema и Я никогда не получал никакого результата – теперь он работает следующим образом:

  
  • Какова ближайшая вещь, которую MATLAB имеет для пространств имен?
  • Почему ANSI C не имеет пространства имен?
  • XPath с пространством имен в Java
  • Почему неназванное пространство имен является «превосходной» альтернативой статическому?
  • Поддерживает ли C # проектное пространство имён по умолчанию, как VB.NET?
  • Как правильно использовать пространства имен в C ++?
  • Без имени / анонимных пространств имен или статических функций
  • Каковы общие соглашения об использовании пространств имен в Clojure?
  • Для чего нужны встроенные пространства имен?
  • Создание XML-документа с использованием пространств имен в Java
  • Как программно использовать функцию XPath в экземпляре XPathExpression?
  • Interesting Posts

    Как предотвратить перемещение дополнительного пространства дисплея с места для ноутбука в macOS?

    Не удается получить доступ к свойству Swift от Objective-C

    Вложенное членство в группе ldap

    Wget – только получение файла .listing в каждом поддиректоре

    Где можно найти настройки таймаута по умолчанию для всех браузеров?

    Переопределение перегруженной функции базы данных в C ++

    Поддерживает ли C ++ счетчики времени компиляции?

    Как я могу рекурсивно скопировать файлы с расширением файла, сохраняя структуру каталогов?

    Почему pydot не может найти исполняемые файлы GraphViz в Windows 8?

    Как изменить внешний вид пустых папок в finder?

    Когда НЕ использовать статическое ключевое слово в Java?

    Компиляция с -static-libgcc -static-libstdc ++ по-прежнему приводит к динамической зависимости от libc.so

    Поддерживает ли Dapper поддержку табличных значений SQL 2008?

    Количество строк, затронутых UPDATE в PL / SQL

    Какие специальные символы должны быть экранированы в регулярных выражениях?

    Давайте будем гением компьютера.