如何解析Generic XSD文档

时间:2011-07-04 14:32:35

标签: java xml xsd

我需要填写一些XSD文档。

我不是在询问API集I found this very helpful API

这里的问题是......

我如何知道哪个元素是哪个元素的父元素...换句话说..我如何能够提取文档元素的hirarecy(在XML中非常简单)

XSD似乎不同......

以下是一个例子:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  <xs:element name="Journal">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="JournalName"/>
        <xs:element ref="Volumes"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Journals">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="Journal"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
.....

如上所示,虽然JournalJournals的子元素,但它出现在它上面。 (这不可能以XML docuemtns的嵌套方式发生)

感谢。

2 个答案:

答案 0 :(得分:1)

看来你的想法有点困惑。为什么期刊的定义必须先于期刊的定义?这些定义不会包含 - 它们定义了彼此包含的元素,但定义是分开的。考虑一些相应的Java代码:

class Journal {
    String journalName;
    List<Volume> volumes;
}

class Journals {
    List<Journal> journals;
}

你不会期望看到任何特定顺序的那些,更不用说期刊的定义发生在期刊的内部,对吗?

因此,如果你想从模式中提取层次结构,我担心你必须阅读整个文档,并注意元素被定义为包含其他元素的位置。您可以随时建立层次结构的描述。

答案 1 :(得分:0)

尝试阅读XSD(例如:w3schools)。上面的XSD提到符合这个XSD的XML可以有一个元素Journals,它包含几个子元素Journal。可能看起来好像是期刊是一个子元素,但事实并非如此。