给定一组 XPath 映射,我希望能够生成一个完整的 XML 文件。
输入可以在两个映射中指定: (1) 一个列出 XPath 表达式和值;(2) 另一个定义适当的命名空间。
/create/article[1]/id => 1
/create/article[1]/description => bar
/create/article[1]/name[1] => foo
/create/article[1]/price[1]/amount => 00.00
/create/article[1]/price[1]/currency => USD
/create/article[2]/id => 2
/create/article[2]/description => some name
/create/article[2]/name[1] => some description
/create/article[2]/price[1]/amount => 00.01
/create/article[2]/price[1]/currency => USD
对于命名空间:
/create => xmlns:ns1='http://predic8.com/wsdl/material/ArticleService/1/
/create/article => xmlns:ns1='http://predic8.com/material/1/‘
/create/article/price => xmlns:ns1='http://predic8.com/common/1/‘
/create/article/id => xmlns:ns1='http://predic8.com/material/1/'
另请注意,我还要处理 XPath属性表达式,这一点很重要。例如:我也应该能够处理属性,例如:
/create/article/@type => richtext
最终输出应如下所示:
<ns1:create xmlns:ns1='http://predic8.com/wsdl/material/ArticleService/1/'>
<ns1:article xmlns:ns1='http://predic8.com/material/1/‘ type='richtext'>
<name>foo</name>
<description>bar</description>
<ns1:price xmlns:ns1='http://predic8.com/common/1/'>
<amount>00.00</amount>
<currency>USD</currency>
</ns1:price>
<ns1:id xmlns:ns1='http://predic8.com/material/1/'>1</ns1:id>
</ns1:article>
<ns1:article xmlns:ns1='http://predic8.com/material/2/‘ type='richtext'>
<name>some name</name>
<description>some description</description>
<ns1:price xmlns:ns1='http://predic8.com/common/2/'>
<amount>00.01</amount>
<currency>USD</currency>
</ns1:price>
<ns1:id xmlns:ns1='http://predic8.com/material/2/'>2</ns1:id>
</ns1:article>
</ns1:create>
PS:这是对上一个问题提出的更详细的问题,尽管由于一系列进一步的要求和澄清,建议我提出更广泛的问题以满足我的需求。
另请注意,我正在用 Java 实现这一点。因此,基于 Java 或基于 XSLT 的解决方案都是完全可以接受的。谢谢。
进一步说明:我真的在寻找一个通用的解决方案。上面显示的 XML 只是一个示例。