1
我想通過JDOM的XPathExpression選項獲取元素。帶前綴'uml'的JDOM2名稱空間尚未聲明
我的代碼如下所示:
public static Element getElement(Document doc)
{
XPathFactory xpfac = XPathFactory.instance();
XPathExpression<Element> xp = xpfac.compile("//uml:Model/packagedElement[@name='Content']", Filters.element());
return xp.evaluateFirst(doc);
}
可悲的是,我得到了以下錯誤:
java.lang.IllegalArgumentException異常:命名空間前綴 'UML' 尚未聲明。
我的文檔開頭是這樣的:
<?xml version='1.0' encoding='UTF-8'?>
<xmi:XMI xmi:version='2.1' xmlns:uml='http://www.omg.org/spec/UML/20090901'...
所以,在我看來聲明命名空間。如果我用給定文檔的工具檢查xpath表達式,找到元素。
這就是我如何創建的文檔:
public static Document readXML(File file)
{
Document doc = null;
try {
doc = new SAXBuilder().build(file);
} catch (JDOMException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return doc;
}
所以,哪來的錯誤? XpathExpression如何找到元素「// uml:Model/packagedElement [@ name ='Content']」?
問候
非常感謝您,我之前沒有得到過...只是從JDOM開始 – Belenus