sql - 如何创建 XML
假设我想生成一部分 XML 从表中提取数据并将这部分放在 [CDATA 元素中。
例如,假设我生成了这个 XML
select xmlelement("TAG1",
xmlelement("TAG2",col2),
xmlelement("TAG3",
xmlelement(
问题描述
假设我想生成一部分 XML 从表中提取数据并将这部分放在 [CDATA 元素中。
例如,假设我生成了这个 XML
select xmlelement("TAG1",
xmlelement("TAG2",col2),
xmlelement("TAG3",
xmlelement("TAG4",col4)))
from MYTABLE
其中 col2 和 col4 是 MYTABLE 的列
以获得以下XML:
<TAG1>
<TAG2> 10 </TAG2>
<TAG3>
<TAG4> England </TAG4>
</TAG3>
</TAG1>
但现在让我们假设我想要得到这样的东西:
<TAG1>
<TAG2> 10 </TAG2>
<![CDATA[<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<TAG3>
<TAG4> England </TAG4>
</TAG3> ]]>
</TAG1>
我该怎么做?我的意思是,即使在这种情况下,我希望 CDATA 中的部分不是使用恒定的长字符串创建,而是始终从表中提取数据,并且我希望在 TAG3 之后关闭此部分
将整数值转换为小数值(十进制)
寻找一种不使用字符串将正数(整数)从例如 123 转换为 0.123 的方法。可以是任意大小的整数。不关心负值。
Dim value As Integer = 123
Dim num As Decimal = "." & value.ToString
这看起来很简单,但我不确定如何使用数学来做到这一点。如何在不使用字符串的情况下进行转换?
解决方案
可能不是最好的解决方案,这是REPLACE
.
对于固定字符串:
select REPLACE(REPLACE(xmlelement("TAG1",
xmlelement("TAG2",col2),
xmlelement("TAGX",
xmlelement("TAG3",
xmlelement("TAG4",col4)))),'/TAGX',']]'),'TAGX','![CDATA[<?xml version="1.0" encoding="UTF-8" standalone="yes"?')
from MYTABLE;
输出:
<?xml version="1.0" encoding="UTF-8"?>
<TAG1>
<TAG2>10</TAG2>
<![CDATA[<?xml version="1.0" encoding="UTF-8" standalone="yes"?><TAG3><TAG4>England</TAG4></TAG3>]]>
</TAG1>
现在使用 Column 中的列值。CDATA.MYTABLE.Col5
该值为StringtoInserttoCDATA.
select REPLACE(REPLACE(xmlelement("TAG1",
xmlelement("TAG2",col2),
xmlelement("TAGX",
xmlelement("TAG3",
xmlelement("TAG4",col4)))),'</TAGX',']]'),'TAGX','![CDATA[<?xml '||col5)
as xmldataStringInsertedfromcol
from MYTABLE;
输出 :
<?xml version="1.0" encoding="UTF-8"?>
<TAG1>
<TAG2>10</TAG2>
<![CDATA[<?xml StringtoInserttoCDATA><TAG3><TAG4>England</TAG4></TAG3>]]>
</TAG1>
完整的解决方案演示可以在 dbfiddlelink https://dbfiddle.uk/?rdbms=oracle_18&fiddle=54dc5d9b1d4c8b2b08912925da59837c中找到
推荐阅读
- c++ - “表达式不可赋值”
- c++ - C ++将对象向量写入文件
- html - 为什么我的图像没有按照我喜欢的方式对齐?
- autohotkey - 再次按下按键时功能不同
- python - 尝试每天更新covid
- shopify - 在 shopify image_picker 中获取图像源需要帮助
- asp.net-core-mvc - .NET TopologySuite 多边形放大
- python-3.x - pip3 install inside venv 抛出“要求已经满足”
- haskell - cabal 说“重新安装可能会破坏以下软件包”是什么意思
- python - 我们如何通过 Down_arrow 将焦点从 QLineEdit 更改为 QListWidget?
假设我想生成一部分 XML 从表中提取数据并将这部分放在 [CDATA 元素中。
例如,假设我生成了这个 XML
select xmlelement("TAG1",
xmlelement("TAG2",col2),
xmlelement("TAG3",
xmlelement(
问题描述
假设我想生成一部分 XML 从表中提取数据并将这部分放在 [CDATA 元素中。
例如,假设我生成了这个 XML
select xmlelement("TAG1",
xmlelement("TAG2",col2),
xmlelement("TAG3",
xmlelement("TAG4",col4)))
from MYTABLE
其中 col2 和 col4 是 MYTABLE 的列
以获得以下XML:
<TAG1>
<TAG2> 10 </TAG2>
<TAG3>
<TAG4> England </TAG4>
</TAG3>
</TAG1>
但现在让我们假设我想要得到这样的东西:
<TAG1>
<TAG2> 10 </TAG2>
<![CDATA[<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<TAG3>
<TAG4> England </TAG4>
</TAG3> ]]>
</TAG1>
我该怎么做?我的意思是,即使在这种情况下,我希望 CDATA 中的部分不是使用恒定的长字符串创建,而是始终从表中提取数据,并且我希望在 TAG3 之后关闭此部分
寻找一种不使用字符串将正数(整数)从例如 123 转换为 0.123 的方法。可以是任意大小的整数。不关心负值。
Dim value As Integer = 123
Dim num As Decimal = "." & value.ToString
这看起来很简单,但我不确定如何使用数学来做到这一点。如何在不使用字符串的情况下进行转换?
可能不是最好的解决方案,这是REPLACE
.
对于固定字符串:
select REPLACE(REPLACE(xmlelement("TAG1",
xmlelement("TAG2",col2),
xmlelement("TAGX",
xmlelement("TAG3",
xmlelement("TAG4",col4)))),'/TAGX',']]'),'TAGX','![CDATA[<?xml version="1.0" encoding="UTF-8" standalone="yes"?')
from MYTABLE;
输出:
<?xml version="1.0" encoding="UTF-8"?>
<TAG1>
<TAG2>10</TAG2>
<![CDATA[<?xml version="1.0" encoding="UTF-8" standalone="yes"?><TAG3><TAG4>England</TAG4></TAG3>]]>
</TAG1>
现在使用 Column 中的列值。CDATA.MYTABLE.Col5
该值为StringtoInserttoCDATA.
select REPLACE(REPLACE(xmlelement("TAG1",
xmlelement("TAG2",col2),
xmlelement("TAGX",
xmlelement("TAG3",
xmlelement("TAG4",col4)))),'</TAGX',']]'),'TAGX','![CDATA[<?xml '||col5)
as xmldataStringInsertedfromcol
from MYTABLE;
输出 :
<?xml version="1.0" encoding="UTF-8"?>
<TAG1>
<TAG2>10</TAG2>
<![CDATA[<?xml StringtoInserttoCDATA><TAG3><TAG4>England</TAG4></TAG3>]]>
</TAG1>
完整的解决方案演示可以在 dbfiddlelink https://dbfiddle.uk/?rdbms=oracle_18&fiddle=54dc5d9b1d4c8b2b08912925da59837c中找到