【问题标题】:Navigation through Objects in JavaJava 中的对象导航
【发布时间】:2017-03-06 14:38:16
【问题描述】:

我的目标是在自定义对象中重新创建 XML 的结构以进一步使用它。实际上,我希望将 XML 作为输入并生成 LaTeX 作为输出。对于这个任务,我已经实现了 JAXB 库的原理。但不要认为这是一个好主意,因为在 TeX 中保留所需的文档结构作为输出并不方便。

这是我的自定义类的示例:

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;
    }

}

所以我有一个 Section 类的列表,其中包含标题、段落列表 (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&lt;SubSec, Par, Table, Fig&gt;。我可以按特定顺序将信息放在那里,但不能检索。或者我可以吗?

【问题讨论】:

  • 您确定要在 Java 中执行此操作吗?在 XSLT 或 XQuery 中处理混合内容通常要容易得多,或者如果您真的不想学习一门新语言,请使用通用对象模型,例如 JDOM 或 XOM。
  • 问题是,我将 XML 转换为 LaTeX - 带有自己标记的文本格式。它与 XML 非常不同。我的同事已经成功编写了 XSLT,用于在不同的 XML 和 HTML 之间进行转换。对于 Java,使用 Pattern 和 Matcher 进行解析的工作量很小。但是对于转换为 LaTeX XSLT 并没有太大的力量。例如,最大的问题是表格,这些语言在这些语言中非常不同,需要硬编码。
  • 不知道和谁谈论 XSLT :)

标签: java xml object arraylist latex


【解决方案1】:

是否可以创建一个父类,比如 DocumentComponent,其中 SubSec、Par、Table 和 Fig 都是子类,然后说一个文档是 DocumentComponents 的有序列表?

【讨论】:

  • 你的意思是只为所有人创建一个包含在Section中的类,并让其他其他类扩展这个父类?有道理,会试试的。
  • 感谢您的建议。在采用这个和类继承的解决方法之后,我终于可以使用对象并将它们写入 LaTeX,就像使用 Java DOM 库和 XML 一样:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多