Java XPath クエリでの XML 名前空間の処理
Java では、XPath を使用して XML をクエリする場合、名前空間によって問題が発生する可能性があります。 XML に名前空間が含まれていない場合、XPath クエリは簡単ですが、名前空間が存在すると複雑になります。
ケース 1: 名前空間のない XML
名前空間のない XML の場合、XPathクエリではデフォルトの名前空間が使用されますが、これは事実上名前空間ではありません。この場合、「/workbook/sheets/sheet[1]」のようなクエリで要素を簡単に取得できます。
ケース 2: 名前空間を含む XML
ただし、名前空間を含む XML次のような名前空間は複雑さを増します:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"> <sheets> <sheet name="Sheet1" sheetId="1" r:id="rId1"/> </sheets> </workbook>
このような場合、XPath 式は「/workbook/sheets/sheet[1]」は、要素が「http://schemas.openxmlformats.org/spreadsheetml/2006/main」名前空間にバインドされているため、失敗します。
解決策:
/*[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]
以上がJava XPath クエリで XML 名前空間を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。