0
final SAXBuilder builder = new SAXBuilder();
final Document xml = builder.build(file);
final Element root = (Element) xml.getRootElement();
Element child = root.getChild("Header", Namespace.getNamespace("http://www.editeur.org/icedis/claims"));
final XPathContext ctx = XPathContext.create(root);
這是我的代碼。 XPathContext只是JXPathContext的封裝。正如你看到的,使用名字空間構造的'child'變量,如果我刪除它,它將不起作用。如何在指定xmlns的情況下使用JXPathContext獲取值?
但現在我想從XML獲得價值使用XPath這樣
ctx.getValue("/Header/SentDateTime")
而且着,當然它總是返回null。看來解決方案很簡單,但我無法在互聯網上找到它。如果我從XML文件中刪除xmlns,一切都會起作用,但這不是一個選項。那麼我應該如何使用這個XML?
另外,XML文件的短版:
<?xml version="1.0" encoding="UTF-8"?>
<ICEDISClaimMessage version="0.1" xmlns="http://www.editeur.org/icedis/claims">
<Header>
<Sender>
<SenderIdentifier>
<SenderIDType>06</SenderIDType>
<IDValue>1234567890128</IDValue>
</SenderIdentifier>
<SenderName>Apogee Agency</SenderName>
</Sender>
<Addressee>
<AddresseeIdentifier>
<AddresseeIDType>06</AddresseeIDType>
<IDValue>23456789</IDValue>
</AddresseeIdentifier>
</Addressee>
<MessageNumber>111</MessageNumber>
<SentDateTime>20101001</SentDateTime>
<MessageNote>Sample file 1: a claim made by an agent to a publisher for a journal issue not yet delivered</MessageNote>
</Header>
</<ICEDISClaimMessage>