我解析了一個非常大的xml文件(來自jpylyzer,一個jp2屬性提取器)。此XML包含許多JP2圖像的特性,每一個使用相同的元素,如:使用XPathExpression和NODESET評估許多元素
//results/jpylyzer/fileInfo/fileName
//results/jpylyzer/properties/jp2HeaderBox/imageHeaderBox/height
//results/jpylyzer/properties/jp2HeaderBox/imageHeaderBox/width
//results/jpylyzer/properties/jp2HeaderBox/imageHeaderBox/bPCDepth
爲了減少處理時間,我用這個方法:
for (XPathExpression xPathExpression : listXPathExpression) {
nodeList = (NodeList) xPathExpression.evaluate(document, XPathConstants.NODESET);
//we use our list
}
這是非常方便,快速,但元素的數量必須符合我們對每個屬性的預期。 由於某些屬性對於某些圖像是唯一的,因此某些圖像將不會找到某些xpath值。
nodeList只填充了找到的值,這是一個問題:沒有辦法將這些值與其他值匹配,因爲根據找到的屬性數量不同,列表的大小不一樣。
有沒有找到沒有值時填充「空白」的方法?
很容易用XSLT。不熟悉Java;你可以設置除根/文件元素以外的上下文項嗎?您可以將更多路徑表達式應用於表達式計算的nodeList嗎?你可以迭代一個nodeList? –
我可以迭代節點列表。我想我也可以評估。 –