我的目標是在自定義對象中重新創建XML的結構以進一步操作它。實際上,我希望將XML作爲輸入並生成LaTeX作爲輸出。爲了這個任務,我實現了JAXB庫的原理。但不要認爲這是一個好主意,因爲在TeX中保留所需的文檔結構並不方便。通過Java中的對象進行導航
這裏是我的自定義類的一個實例:
public class Section {
private String title;
private List<Par> par;
private List<SubSec> subsec;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = "\\section {" + title + "}";
}
public List<Par> getPar() {
if (par == null) {
par = new ArrayList<Par>();
}
return this.par;
}
public List<SubSec> getSubSec() {
if (subsec == null) {
subsec = new ArrayList<SubSec>();
}
return this.subsec;
}
}
所以我有科類,它有標題,段落(PAR)和小節的列表(SubSec)的名單列表(簡化LaTeX的文章結構體)。段落包含文本,但小節也可以包括段落列表。 經過XML輸入後,我將其中的所有數據轉移到對象中,該類的實例。
作爲例子:
List<Section> listSections = new ArrayList<Section>();
// omitting the actions to recreate the structure and set values to Objects
// now, to retrieve and write:
for (int j = 0; j < listSections.size(); j++) {
List<Par> listParText = listSections.get(j).getPar();
writer.write(listSections.get(j).getTitle());
writer.newLine();
for (Par parList : listParText) {
if (parList.getText() != null) {
writer.write(parList.getText());
writer.newLine();
}
}
}
的問題是,我無法重新創建該文檔的舞臺上的自定義對象的結構 - >的TeX。雖然結構保存在舞臺XML - 自定義對象上。在對象模型我有,例如:
Section1(title): Par(text), Par(text), Par(text)
Section2(title): Subsection1(title): Par(text), Par(text), Par(text)
Subsection2(title): Par(text), Par(text)
Section3(title): Par(text)
有沒有辦法救依次並以相同的順序來寫它們到文件中獲取價值?使用getter和setter獲取值對我來說不是問題,要按正確的順序檢索它們。
更新 爲了澄清這個問題,讓我們再假定每個部分包含一定的順序段(PAR),第(SubSec),表,圖。但是顯然Java不允許創建如下列表:List<SubSec, Par, Table, Fig>
。我可以按某種順序在那裏放置信息,但不能檢索。或者我可以嗎?
你確定你想在Java中做到這一點嗎?處理混合內容通常在XSLT或XQuery中更容易,或者如果您不想學習新語言,請使用通用對象模型,如JDOM或XOM。 –
問題是,我將XML轉換爲LaTeX - 帶有自己標記的文本格式。它與XML非常不同。我的同事成功編寫了XSLT,用於在不同的XML和HTML之間進行轉換。對於Java來說,使用模式和匹配器進行解析只需要很少的工作。但是對於轉換成LaTeX XSLT沒有太大的實力。例如,最大的問題是表格,這些語言有很大不同,需要硬編碼。 – Vitaliy
沒有意識到和誰談論XSLT :) – Vitaliy