我们可以在 cosmos Db 中添加 XML 架构吗?如果是的话我们如何查询它们?我可以将 XML 数据保存为字符串,但如何查询它们?
以下是我收集的文档:
{
"id": "4796300e-b1d3-4c60-abc3-9ac28fc87d45",
"BId": "55ce95c2-b7f6-4c9b-a288-2363881f14bb",
"SheetName": "<root><Tax_Type>tax</Tax_Type><Buildings_Limit /><Buildings_Value /><Contents_Limit /><Contents_Value /><Number_of_Stories /><Other_Limit /><Other_Value /><PremiumValue /><Roof_Geometry /><IsSoft_Story /><Sprinklers /><Tax>0</Tax><Tax_Percent>0</Tax_Percent><Year_Built /><Construction_Scheme /><Construction_Code /><Construction_Description /><Occupancy_Scheme /><Occupancy_Code /><Occupancy_Description /></root>",
"HeaderIndex": "1",
"_rid": "xxxxxxx",
"_self": "dbs/xxx==/colls/xxx=/docs/xxx==/",
"_etag": "\"xxxxx\"",
"_attachments": "attachments/",
"_ts": 1509170527
}
Run Code Online (Sandbox Code Playgroud)
Cosmos DB(显然已经取代了 Document DB)开发团队故意选择不支持 XML。他们的与模式无关的索引白皮书阐明了选择背后的原因:
\n\n\n\n\n文档的模式描述了独立于文档实例的文档的结构和类型系统。例如,XML 模式规范提供了用于表示 XML 文档的模式的语言。与 XML 不同,JSON 不存在如此广泛采用的模式标准。与 XML 相比,JSON\xe2\x80\x99s 类型系统是许多现代编程语言(尤其是 JavaScript)类型系统的严格子集。尽管缺乏模式规范,但 JSON 语法的简单性是其被广泛采用的原因之一。为了消除数据库和应用程序编程模型之间的阻抗不匹配,DocumentDB 利用了 JSON 的简单性及其缺乏模式规范的优势。它不对文档做出任何假设,并且除了实例特定值之外,还允许 DocumentDB 集合中的文档在架构上发生变化。与其他文档数据库相比,DocumentDB\xe2\x80\x99s 数据库引擎直接在 JSON 语法级别运行,与文档模式的概念无关
\n
然后,该引擎为您提供了一堆 API 来查询数据:SQL、Cassandra、Mongo、Gremlin、Table和Etcd(该列表将来可能会扩展)。
\n\n坏消息是您不能只是将 XML 放入其中就结束了 - 没有 API 可以让您这样做。
\n\n好消息是您可以将 XML 转换为 JSON 并返回。获得 JSON 后,就会有大量的客户端库可供选择(同样,该列表可能会随着时间的推移而增长)。
\n\n在 StackOverflow 上查找如何将 XML 转换为 JSON 的具体示例很容易,例如:
\n\n\n\n回到您的特定文档,您可以将字符串转换为子对象,如下所示:
\n\n{\n"id": "4796300e-b1d3-4c60-abc3-9ac28fc87d45",\n"BId": "55ce95c2-b7f6-4c9b-a288-2363881f14bb",\n"SheetName": {\n "Tax_Type": "tax",\n "Buildings_Limit": {},\n "Buildings_Value": {},\n "Contents_Limit": {},\n "Contents_Value": {},\n "Number_of_Stories": {},\n "Other_Limit": {},\n "Other_Value": {},\n "PremiumValue": {},\n "Roof_Geometry": {},\n "IsSoft_Story": {},\n "Sprinklers": {},\n "Tax": "0",\n "Tax_Percent": "0",\n "Year_Built": {},\n "Construction_Scheme": {},\n "Construction_Code": {},\n "Construction_Description": {},\n "Occupancy_Scheme": {},\n "Occupancy_Code": {},\n "Occupancy_Description": {}\n},\n"HeaderIndex": "1",\n"_rid": "xxxxxxx",\n"_self": "dbs/xxx==/colls/xxx=/docs/xxx==/",\n"_etag": "\\"xxxxx\\"",\n"_attachments": "attachments/",\n"_ts": 1509170527\n}\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
3729 次 |
| 最近记录: |