"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como lidar com namespaces XML em consultas Java XPath?

Como lidar com namespaces XML em consultas Java XPath?

Publicado em 2024-12-22
Navegar:430

How to Handle XML Namespaces in Java XPath Queries?

Manipulação de namespace XML em consultas Java XPath

Em Java, ao consultar XML com XPath, os namespaces podem representar um desafio. Quando XML não contém namespaces, as consultas XPath podem ser diretas, mas a presença de namespaces introduz complexidades.

Caso 1: XML sem namespaces

Para XML sem namespaces, XPath as consultas usam o namespace padrão, que efetivamente não é nenhum namespace. Nesse caso, consultas como "/workbook/sheets/sheet[1]" podem recuperar elementos facilmente.

Caso 2: XML com namespaces

No entanto, XML com namespaces como os seguintes adicionam complexidade:



  
    
  

Nesses casos, a expressão XPath "/workbook/sheets/sheet[1]" falhará porque os elementos estão vinculados ao "http://schemas.openxmlformats.org/spreadsheetml/ 2006/main" namespace.

Soluções:

  1. Namespace Registro: O método preferido é registrar o namespace com um prefixo e usá-lo na consulta XPath, facilitando a leitura e manutenção.
  2. Correspondência genérica com predicado: Sem registro de namespace, uma expressão XPath mais complexa pode ser usada:
/*[local-name()='workbook' and namespace-uri()='http://schemas.openxmlformats.org/spreadsheetml/2006/main']
  /*[local-name()='sheets' and namespace-uri()='http://schemas.openxmlformats.org/spreadsheetml/2006/main']
  /*[local-name()='sheet' and namespace-uri()='http://schemas.openxmlformats.org/spreadsheetml/2006/main'][1]
  1. Correspondência de nome local: Uma opção menos preferida é corresponder apenas ao nome local do elemento, ignorando o namespace, mas isso corre o risco de selecionar elementos incorretos se houver vocabulários mistos existe.
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3