繁体   English   中英

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

[英]How to Programmatically Update and Add Elements to an XSD

我需要以编程方式更新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的文档相当丰富,并且可以找到许多教程和代码示例。 请参阅将XML数据读取到DOM中Java:如何通过org.w3c.dom.document上的xpath字符串定位元素Java DOM-插入一个元素,一个又一个用于创建和添加新元素, 最短的方法是什么漂亮地打印org.w3c.dom.Document到stdout? 有关使用的概念的更多详细信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM