gpt4 book ai didi

java - 如何以编程方式更新元素并将元素添加到 XSD

转载 作者:行者123 更新时间:2023-11-30 08:15:57 29 4
gpt4 key购买 nike

我需要以编程方式更新 java 中的现有 XSD,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="com/company/common" xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="com/company/common/" elementFormDefault="qualified">
<xs:include schemaLocation="DerivedAttributes.xsd" />
<xs:element name="MyXSD" type="MyXSD" />
<xs:complexType name="Containter1">
<xs:sequence>
<xs:element name="element1" type="element1" minOccurs="0"
maxOccurs="unbounded" />
<xs:element name="element2" type="element2" minOccurs="0"
maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="Containter2">
<xs:sequence>
<xs:element name="element3" type="Type1" minOccurs="0" />
<xs:element name="element2" type="Type2" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:schema>

如何以编程方式将具有 (name="element3"type="element 3"minOccurs="0"maxOccurs="unbounded") 的元素添加到容器 1?

我已经研究过 DOM、Xerces、JAXB...但是没有真正明确的“正确”方法遍历 XSD 并附加元素。 Xerces 看起来很有前途,但它的文档很少..

谢谢!

最佳答案

下面是使用 DOM 的方法:

    // parse file and convert it to a DOM
Document doc = DocumentBuilderFactory
.newInstance()
.newDocumentBuilder()
.parse(new InputSource("test.xml"));

// use xpath to find node to add to
XPath xPath = XPathFactory.newInstance().newXPath();
NodeList nodes = (NodeList) xPath.evaluate("/schema/complexType[@name=\"Containter1\"]",
doc.getDocumentElement(), XPathConstants.NODESET);

// create element to add
org.w3c.dom.Element newElement = doc.createElement("xs:element");
newElement.setAttribute("type", "element3");
// set other attributes as appropriate

nodes.item(0).appendChild(newElement);


// output
TransformerFactory
.newInstance()
.newTransformer()
.transform(new DOMSource(doc.getDocumentElement()), new StreamResult(System.out));

关于 Java XML 的文档相当广泛,可以找到许多教程和代码示例。参见 Reading XML Data into a DOM , Java: how to locate an element via xpath string on org.w3c.dom.document , Java DOM - Inserting an element, after another用于创建和添加新元素,以及 What is the shortest way to pretty print a org.w3c.dom.Document to stdout?有关所用概念的更多详细信息。

关于java - 如何以编程方式更新元素并将元素添加到 XSD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28592796/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com