【问题标题】:How to retrieve all the elements name from a xml schema如何从 xml 模式中检索所有元素名称
【发布时间】:2013-09-08 07:39:55
【问题描述】:

我在获取 java 中架构元素的名称时遇到问题。我正在创建一个小型 xml 编辑器,它可以加载 xml 架构并针对 xml 架构验证 xml 文件。我想解析一个模式,获取每个元素的名称,然后将它放在我的内容助手中,这样用户就可以看到所有可用的元素。

我已经阅读了 XSOM 用户指南,但我不太了解...

谁能帮我实现我的 addElementsFromSchema(File xsdfile) 函数,因为我迷失了自己的尝试。

public static void addElementsFromSchema(File xsdfile){

}

【问题讨论】:

  • 您是否要获取所有<xsd:element> 定义的列表?您只需要名称(在每个 中定义),还是需要每个元素的整个类型定义?
  • 我必须得到每个元素的整个类型定义。但是,在内容助手中只会显示名称 (name="...")。
  • 您知道如何直观地表示每个元素的定义吗?您想显示原始 XML,还是有其他想法?
  • 加载架构并且当用户开始编写 xml 并按下“

标签: java parsing schema element


【解决方案1】:

听起来您的主要需求是获取元素名称,至少目前是这样。您可以通过以下方式获取元素名称:

XSOMParser parser = new XSOMParser();
parser.parse(xsdfile);

XSSchemaSet schemas = parser.getResult();
Iterator<XSElementDecl> i = schemas.iterateElementDecls();
while (i.hasNext()) {
    XSElementDecl element = i.next();
    String name = element.getName();
    // Add to editor
}

显示元素定义要困难得多,因为 XML 模式中的元素声明会变得相当复杂。

【讨论】:

  • 谢谢,但我收到很多错误:线程“AWT-EventQueue-0”中的异常 java.lang.NoClassDefFoundError: org/relaxng/datatype/ValidationContext 引起:java.lang。 ClassNotFoundException: org.relaxng.datatype.ValidationContext
  • 你需要在你的类路径中添加relaxngDatatype.jar。来自xsom.java.netxsom.jar 的两种风格都依赖于relaxngDatatype.jar 和JAXP 1.1。确保在分发使用 XSOM 的应用程序时至少有 xsom.jar 和 RelaxngDatatype.jar。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-20
  • 1970-01-01
相关资源
最近更新 更多