当前位置: 首页 > 知识库问答 >
问题:

动态生成XML模式

尉迟高澹
2023-03-14

我试图使用Xerces-J动态生成XML schema,但出现了以下错误,希望得到相关帮助。

DocumentBuilderFactory dbfac = DocumentBuilderFactory.newInstance();
dbfac.setNamespaceAware(true);

DocumentBuilder docBuilder = dbfac.newDocumentBuilder();
Document doc = docBuilder.newDocument();

Element schema = doc.createElement("xs:schema");           
schema.setAttribute("xmlns:xs", "http://www.w3.org/2001/XMLSchema");
doc.appendChild(schema);

Element e = doc.createElement("xs:element");            
e.setAttribute("name", "test");
e.setAttribute("type", "xs:string");

schema.appendChild(e);

TransformerFactory transfac = TransformerFactory.newInstance();
Transformer trans = transfac.newTransformer();
trans.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no");
trans.setOutputProperty(OutputKeys.INDENT, "yes");

//create string from xml tree
StringWriter sw = new StringWriter();
StreamResult result = new StreamResult(sw);
DOMSource source = new DOMSource(doc);

trans.transform(source, result);
String xmlString = sw.toString();

System.out.println(xmlString);

SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);

Schema schema1 = schemaFactory.newSchema(source);

Output is

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="test" type="xs:string"/>
</xs:schema>

共有1个答案

阮阳曦
2023-03-14

构建DOM时,不将名称空间指定为属性。相反,使用createElement()的版本,该版本接受两个参数:第一个是命名空间URI,第二个是元素的限定名。

还要注意,限定名的前缀将自动与命名空间URI匹配。如果需要,可以完全消除前缀,序列化程序将执行正确的操作(创建不带前缀的xmlns属性,或者生成前缀)。

 类似资料:
  • 问题内容: 我们正在使用Oracle 11数据库和Java开发环境(使用Eclipse),并且希望将多个xml模式迁移到SQL模式。 已经看过xsd了,但是确实需要一些可以在不安装SQL Server的情况下从ant / Eclipse运行的功能。 问候, 安迪 问题答案: 另一个选择是使用JAXB生成Java对象,并使用Hibernate创建基于类层次结构的架构。 话虽如此,这取决于您要尝试做的

  • 问题内容: 我想知道是否有一种方法可以在我拥有数据和标签的情况下自动从XSD架构生成XML文件。我想在python / java中做到这一点。似乎很有可能,但是我找不到任何允许我执行此操作的库。我正在寻找一个相当快速的解决方案。 问题答案: 查看适用于与JAXB相似的Python工具的pyXSD。 XSD用于创建Python类。Python对象用于发出XML。

  • 问题内容: 有人知道如何从现有的XML模式(XSD文件)生成JSON模式吗?有没有可用的工具? 问题答案: 免责声明 :我是Jsonix的作者,Jsonix是一个功能强大的开源XML <-> JSON JavaScript映射库。 今天,我发布了具有新JSON Schema生成功能的新版本的Jsonix Schema Compiler 。 让我们以采购订单模式为例。这是一个片段: 您可以使用提供的

  • 我必须在运行时动态生成一个xml文件。请帮助我使用PHP动态生成下面的XML文件。 null

  • 我一直在努力寻找一些可以从java中的yang模型生成示例xml/json数据的工具,例如对于xsd,有一些工具可以生成示例xml。 我试过平:1。它是用Python编写的。2.转换后,它给了我yin格式,这是相当于yang规范的xml。例如,对于以下阳代码,如果我使用pyang将其转换为阴: 这就是我得到的- 相反,我想要的是 这样我就可以得到xml,输入详细信息并根据相同的数据进行验证。

  • 问题内容: 假设我有一个格式为基本XML的文件,如下所示: 我想在运行时变成这样的东西: …,然后将新创建的枚举传递给我的应用程序。我将如何实现这样的目标?可以吗 问题答案: 您尝试做的事情没有任何意义。枚举实际上仅是为了编译时的利益,因为它们表示一组固定的常量。在运行时,动态生成的枚举的含义是什么- 与普通对象有什么不同?例如: 您的XML可以解析为新实例化的对象,这些对象可以存储在某些程序中,