Xml 如何按照XSD定义的顺序在序列下追加元素

Xml 如何按照XSD定义的顺序在序列下追加元素,xml,dom,xslt,xsd,schema,Xml,Dom,Xslt,Xsd,Schema,我有一个输入XML(它的保险业符合ACORD模式),我的任务是在其中插入一个元素,使其仍然符合模式。输入XML的简要结构如下: <Root> <Child> <Sub-Child> <a> <b> <c> <d> <e> <f> </Sub-Child> <Child>

我有一个输入XML(它的保险业符合ACORD模式),我的任务是在其中插入一个元素,使其仍然符合模式。输入XML的简要结构如下:

<Root>
  <Child>
    <Sub-Child>
      <a>
      <b>
      <c>
      <d>
      <e>
      <f>
    </Sub-Child>
  <Child>
</Root>


其中,
都在一个序列中,可选。现在,我必须在
之后插入一个元素,但我不知道兄弟姐妹是否会出现。到目前为止,我在项目中使用了
XSLT
,尽一切可能避免使用
JAXB
。使用
XSLT
(我的第一个偏好)还是不生成JAXB类就可以实现这一点。

使用XSLT是不可能的。我怀疑使用JAXB类甚至不容易


需要做的是加载和解析XSD,然后编写代码解释元素序列上的规则,以确定可以在何处插入哪个元素——这需要创建与规则对应的代码,然后应用它

我不知道你在找什么。我不认为有什么东西会自动考虑模式。如果复杂性不太高,您可以实现名称模板调用序列(例如,子级的a、b、c、d、e、f),每个命名模板都必须决定是从输入XML中获取元素还是创建一个新的元素(取决于某些变量)。这a、b、c、d、e、f只是一个示例,实际上,几乎有50个元素。实际测试每个元素及其同级元素以决定在何处插入新元素太麻烦了。如果我插入新元素作为子元素的最后一个子元素,你知道有哪个API可以根据模式对元素进行排序吗?请帮助我理解使用JAXB是多么不容易。我可以不解组我的XML,将元素作为对象添加到解组对象中,并根据XSDWe再次对其进行马歇尔处理吗?除了与可能的可选同级进行比较,我们没有找到其他方法。(因为我们是在接近尾声的时候插入的,所以我们只需要测试新元素后面可能出现的两种可能性,如果两者都不存在,那么就进行备份。)