0
說我有這個XML屬性的XML子樹屬於母公司
<doc:document>
<objects>
<circle radius="10" doc:colour="red" />
<circle radius="20" doc:colour="blue" />
</objects>
</doc:document>
這是它是如何解析的(僞代碼):
// class DocumentParser
public Document parse(Element edoc) {
doc = new Document();
doc.objects = ObjectsParser.parse(edoc.getChild("objects"));
for (...?...) {
doc.objectColours.put(object, colour);
}
return doc;
}
ObjectsParser
負責解析的對象但不是也不應該意識到文件的存在。但是,Document
顏色通過使用Map
與對象關聯。
你會推薦什麼樣的圖案將顏色設置從ObjectsParser.parse
重新設置爲DocumentParser.parse
,以便它可以將它與它們在地圖中所屬的對象相關聯?
另一種方法是這樣的:
<doc:document>
<objects>
<circle id="1938" radius="10" />
<circle id="6398" radius="20" />
</objects>
<doc:objectViewSettings>
<doc:objectViewSetting object="1938" colour="red" />
<doc:objectViewSetting object="6398" colour="blue" />
</doc:objectViewSettings>
</doc:document>
難看!
由於可以通過在顏色屬性的名稱空間前綴「文檔」中可以看出,它僅適用於文檔內容。由ObjectsParser創建的對象將不包含此屬性。 – 2010-06-16 21:46:35
沒有ObjectsParser的描述,我們很難讀懂你的想法。在這種情況下,回調看起來像是最好的解決方案,因爲您需要在解析期間獲得控制權。 – 2010-06-16 22:02:18