2011-07-04 35 views
1

我需要将某些XSD文档放入其中。如何解析通用XSD文档

我不是问的API集,I found this very helpful API

这里的问题是..

我怎样才能知道哪些元素是元素......换句话说父..哪有我exectract文档元素的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的嵌套方式中)

谢谢。

回答

0

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

1

看来你的想法有点困惑。为什么期刊的定义必须发生在期刊的定义之前?这些定义不包含彼此 - 它们定义包含另一个元素,但定义是分开的。考虑到一些相应的Java代码:

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

class Journals { 
    List<Journal> journals; 
} 

你不会希望看到那些在任何特定的顺序,更不用说杂志的定义中,要发生的期刊,你会吗?因此,如果你想从模式中提取层次结构,恐怕你将不得不通读整个文档,并注意元素被定义为包含其他元素的位置。您可以随时建立层次结构的描述。

+0

Ohhh no ...,非常讨厌和繁琐..没有任何现成的图书馆,让我从这样做释放? –

+0

我不知道一个。但是,您发布了一个链接到XSOM,它解析了架构 - 您只需要浏览XSOM为您提供的对象并构建层次结构。简单! –