【发布时间】:2020-08-29 05:08:04
【问题描述】:
在列、语言和值基础上解析以下 XML 时需要帮助。我能够以行为基础解析值。任何人都可以帮忙。查询需要在 SQL Server 中。我曾尝试使用OPENXML 写作。但它没有给我想要的输出。任何帮助将不胜感激。
<Root>
<dataModel>
<repo name="SKU" profile="SKU"/>
</dataModel>
<SKU repo="SKU">
<SKU_SKU_Number>DR90A3000/U</SKU_SKU_Number>
<dynamicAttr>
<attrName>Power Supply Frequency</attrName>
<attrValue mLang="1">
<value lang="en">60 Hz</value>
<value lang="da-DK"/>
</attrValue>
<desc code="">60 Hz</desc>
</dynamicAttr>
<dynamicAttr>
<attrName>Ambient Operating Temperature (Max)</attrName>
<attrValue mLang="1">
<value lang="en">90°F </value>
<value lang="da-DK"/>
</attrValue>
<attrValue mLang="1">
<value lang="en"> 32°C</value>
<value lang="da-DK"/>
</attrValue>
<desc code="">90°F | 32°C</desc>
</dynamicAttr>
<dynamicAttr>
<attrName>Compatible Humidifier Pad</attrName>
<attrValue mLang="1">
<value lang="en"/>
<value lang="da-DK"/>
</attrValue>
<desc code=""> </desc>
</dynamicAttr>
<dynamicAttr>
<attrName>Building Size (Max)</attrName>
<attrValue mLang="1">
<value lang="en">Up to 20,000 cubic feet</value>
<value lang="da-DK"/>
</attrValue>
<desc code="">Up to 20,000 cubic feet</desc>
</dynamicAttr>
<dynamicAttr>
<attrName>Recommended Service Life</attrName>
<attrValue mLang="1">
<value lang="en">10 Years</value>
<value lang="da-DK"> </value>
</attrValue>
<desc code="">10 Years</desc>
</dynamicAttr>
<dynamicAttr>
<attrName>Current Draw</attrName>
<attrValue mLang="1">
<value lang="en">0.625 A</value>
<value lang="da-DK"> </value>
</attrValue>
<desc code="">0.625 A</desc>
</dynamicAttr>
<dynamicAttr>
<attrName>Operating Voltage</attrName>
<attrValue mLang="1">
<value lang="en">24 VAC</value>
<value lang="da-DK">25 VAC</value>
<value lang="da-OTH">26 VAC</value>
</attrValue>
<desc code="">24 VAC</desc>
</dynamicAttr>
<dynamicAttr>
<attrName>Static Pressure (Max)</attrName>
<attrValue mLang="1">
<value lang="en">0.3 in wc</value>
<value lang="da-DK"> </value>
</attrValue>
<desc code="">0.3 in wc</desc>
</dynamicAttr>
<dynamicAttr>
<attrName>Duct Opening Width</attrName>
<attrValue> </attrValue>
<desc code=""> </desc>
</dynamicAttr>
<dynamicAttr>
<attrName>Duct Opening Diameter</attrName>
<attrValue> </attrValue>
<desc code=""> </desc>
</dynamicAttr>
<dynamicAttr>
<attrName>Housing Material</attrName>
<attrValue> </attrValue>
<desc lang="en"> </desc>
<desc lang="da-DK"> </desc>
</dynamicAttr>
<dynamicAttr>
<attrName>Duct Opening Height</attrName>
<attrValue> </attrValue>
<desc code=""> </desc>
</dynamicAttr>
<dynamicAttr>
<attrName>Building Square Footage (Max)</attrName>
<attrValue mLang="1">
<value lang="en"> </value>
<value lang="da-DK"> </value>
</attrValue>
<desc code=""> </desc>
</dynamicAttr>
<dynamicAttr>
<attrName>Power Consumption</attrName>
<attrValue mLang="1">
<value lang="en"/>
<value lang="da-DK"/>
</attrValue>
<desc code=""> </desc>
</dynamicAttr>
<dynamicAttr>
<attrName>Mounting Type</attrName>
<attrValue> </attrValue>
<desc lang="en"> </desc>
<desc lang="da-DK"> </desc>
</dynamicAttr>
<dynamicAttr>
<attrName>Remote Mounting Distance (Max)</attrName>
<attrValue> </attrValue>
<desc code=""> </desc>
</dynamicAttr>
</SKU>
</Root>
期望的输出应该是
【问题讨论】:
-
您的 XML 数据中没有空值。自闭合标签应该包含
xsi:nil="true"属性,如果它们应该为空,但它们不是,所以大多数这些值要么是空格,要么是空字符串。您可以使用 nullif() 更正这是 SQL,例如:nullif(trim(x.n.value(N'...', N'...')), N'')。 -
@AlwaysLearning 我不是 XML 专家。感谢分享信息
标签: sql-server xml sql-server-2012 xml-parsing