Вот пример XML-схема, которая приходит от W3C School (shiporder.xsd)Разбор XSD в древовидную структуру
ссылки: http://www.w3schools.com/schema/schema_example.asp
//shiporder.xsd
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="stringtype">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="inttype">
<xs:restriction base="xs:positiveInteger"/>
</xs:simpleType>
<xs:simpleType name="dectype">
<xs:restriction base="xs:decimal"/>
</xs:simpleType>
<xs:simpleType name="orderidtype">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]{6}"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="shiptotype">
<xs:sequence>
<xs:element name="name" type="stringtype"/>
<xs:element name="address" type="stringtype"/>
<xs:element name="city" type="stringtype"/>
<xs:element name="country" type="stringtype"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="itemtype">
<xs:sequence>
<xs:element name="title" type="stringtype"/>
<xs:element name="note" type="stringtype" minOccurs="0"/>
<xs:element name="quantity" type="inttype"/>
<xs:element name="price" type="dectype"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="shipordertype">
<xs:sequence>
<xs:element name="orderperson" type="stringtype"/>
<xs:element name="shipto" type="shiptotype"/>
<xs:element name="item" maxOccurs="unbounded" type="itemtype"/>
</xs:sequence>
<xs:attribute name="orderid" type="orderidtype" use="required"/>
</xs:complexType>
<xs:element name="shiporder" type="shipordertype"/>
</xs:schema>
Я использовал xsom, чтобы сделать эту работу.
После моего разбора работ, я получил результат здесь
//Parsing result
//It parsed the input schema in orders and parsed the content incide when the element
//is a complex type.After finish parsing one complex element and go on next element
Element Name : shiporder
Element Type : shipordertype complex type
Element Name : orderperson
Element Type : stringtype simple type
-------------------
Element Name : shipto
Element Type : shiptotype complex type
Element Name : name
Element Type : stringtype simple type
Element Name : address
Element Type : stringtype simple type
Element Name : city
Element Type : stringtype simple type
Element Name : country
Element Type : stringtype simple type
-------------------
Element Name : item
Element Type : itemtype complex type
Element Name : title
Element Type : stringtype simple type
Element Name : note
Element Type : stringtype simple type
Element Name : quantity
Element Type : inttype simple type
Element Name : price
Element Type : dectype simple type
-------------------
Attributes for CoplexType:shipordertype
Attribute Name:orderid
Attribute Type: orderidtype
Я хочу использовать этот результат для построения дерева по JTree, так что он может помочь мне понять схему XML.
Я знал, что есть некоторые библиотеки и инструменты, которые могут сделать это.
Но я хочу сделать это вручную (добавить узел дерева по каждому элементу), чтобы я мог легко получить информацию о каждом элементе и предоставить древовидное представление.
Вот пример древовидной комы 3.0 (shiporder.xsd)
Я знаю, как добавить узлы в JTree
DefaultMutableTreeNode root = new DefaultMutableTreeNode("package");
DefaultMutableTreeNode node1 = new DefaultMutableTreeNode("doc1");
DefaultMutableTreeNode node2 = new DefaultMutableTreeNode("doc2");
root.add(node1);
root.add(node2);
DefaultMutableTreeNode leafnode = new DefaultMutableTreeNode("doc info");
node1.add(leafnode);
Я попытался JAXB (DOM) для сделайте эту работу, но я думаю, что JAXB в основном обрабатывает класс объекта.
Моя цель - вычислить сходство xsd, и первое, что нужно, - получить сходство структуры.
Я думаю, что будет легко вычислить сходство структуры, если я смогу получить схему дерева и узнать положение каждого элемента и его отношения.
Как я могу использовать результат синтаксического анализа для построения дерева?
способ? думал?
Любая помощь будет оценена по достоинству.
спасибо за ваше предложение! Я пробовал JAXB для выполнения этой работы, но я думаю, что JAXB в основном обрабатывает класс объекта.Моя цель - вычислить сходство xsd, и первое, что нужно, - получить сходство структуры. Я думаю, что будет легко вычислить сходство структуры, если я смогу получить схему дерева и узнать положение каждого элемента и его отношения. Могу ли я спросить вас, что импортирует имена в вашем примере? Что-то не так в моей среде IDE. – Shinline
Для нескольких классов SAX вам понадобятся 'org.xml.sax. *' И 'javax.xml.parsers. *', А также 'org.xml.sax.helpers.DefaultHandler' – helderdarocha