我的XML如下所示:
<?xml version="1.0" encoding="utf-8"?>
<n0:OrderConfirmation xmlns:n0="http://company.org/interface/MVSI"
xmlns:ord="urn:company.com:Order:XYZ:001">
<MessageHeader>
<ID>001</ID>
<CreationDateTime>2020-09-10T07:39:26.697Z</CreationDateTime>
</MessageHeader>
<Order>
<OrderID>00027847</SalesOrderID>
<Status>Confirmed</Status>
<Items>
<Article>
<ArticleID>ABC001</ArticleID>
<LineItem>000001</LineItem>
</Article>
</Items>
</Order>
</n0:OrderConfirmation>我会说,更好的方法是声明一个默认名称空间,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<n0:OrderConfirmation xmlns:n0="http://company.org/interface/MVSI"
xmlns="urn:company.com:Order:XYZ:001">
<MessageHeader>
<ID>001</ID>
<CreationDateTime>2020-09-10T07:39:26.697Z</CreationDateTime>
</MessageHeader>
<Order>
<OrderID>00027847</SalesOrderID>
<Status>Confirmed</Status>
<Items>
<Article>
<ArticleID>ABC001</ArticleID>
<LineItem>000001</LineItem>
</Article>
</Items>
</Order>
</n0:OrderConfirmation>或者更简化:根元素可以是默认命名空间的一部分:
<?xml version="1.0" encoding="utf-8"?>
<OrderConfirmation xmlns="urn:company.com:Order:XYZ:001">
<MessageHeader>
<ID>001</ID>
<CreationDateTime>2020-09-10T07:39:26.697Z</CreationDateTime>
</MessageHeader>
<Order>
<OrderID>00027847</SalesOrderID>
<Status>Confirmed</Status>
<Items>
<Article>
<ArticleID>ABC001</ArticleID>
<LineItem>000001</LineItem>
</Article>
</Items>
</Order>
<OrderConfirmation>因为n0名称空间值对系统和系统生成的所有XML文档都是全局的。
我想知道这是否是XML中的一个很好的实践,让中间元素进入“无命名空间”,或者声明一个从未使用过的名称空间。
更新:为了提供更好的环境,我们正在整个企业中使用ESB集成不同的系统。系统可以分布在整个公司的几个部门。在实际情况中,我们将传入的XML转换为更规范化的XML,并使用与我们管理的数据类型相关的唯一命名空间(在这种情况下是顺序),就像所有其他系统都必须知道的规范数据模型一样。
发布于 2020-09-16 14:42:38
有些人认为一切都应该在名称空间中,因为它记录了负责词汇表设计的人。如果您遵循这一思路,那么这适用于示例消息的有效负载,就像它适用于其他所有内容一样。
有些人认为,除非您需要名称空间,否则不使用名称空间要简单得多。
这取决于你是喜欢一个大项目的纪律和控制方法,还是一个小项目刚刚完成-完成-快速的方法。
https://softwareengineering.stackexchange.com/questions/415949
复制相似问题