当前位置: 首页 > 面试题库 >

如何使用xml显式生成带有元素和属性的xml

元胡媚
2023-03-14
问题内容

我试图生成以下格式的xml:

<Root>
    <Domain>Abc</Domain>
    <Name>Xyz</Name>
    <Contents>
        <Content>
            <ID>1</ID>
            <Value>Test 1</Value>
            <Record ID="1">Test 1</Record>
        </Content>
        <Content>
            <ID>2</ID>
            <Value>Test 2</Value>
            <Record ID="2">Test 2</Record>
        </Content>
    </Contents>
</Root>

我的查询如下:

declare @TestTable table (ID int, Value varchar(100))

insert into @TestTable values (1,'Test 1')
insert into @TestTable values (2,'Test 2')

declare @Domain varchar(max)='Abc'
declare @Name varchar(max)='Xyz'

SELECT
1 AS Tag,
NULL AS Parent,
@Domain as 'Root!1!Domain!Element',
@Name as 'Root!1!Name!Element',
NULL as 'Contents!2!Element',
NULL as 'Content!3!ID!Element',
NULL as 'Content!3!Value!Element',
NULL as 'Content!3!Record!Element'

union

SELECT
2 AS Tag,
1 AS Parent,
NULL,NULL,NULL,NULL,NULL,NULL

union

select
3 as Tag,
2 as Parent,
NUll,NUll,NULL,
ID,Value,Value
from @TestTable

FOR XML EXPLICIT

我的查询没有完全产生记录标签,目前是

<Record>Test 2</Record>

应该是

<Record ID=2>Test 2</Record>

我尝试了所有可能性,但没有获得标签。谁能帮我解决这个问题。


问题答案:

我无法从xml显式获得预期的输出,相反,我使用了xml路径并获得了输出。这是我更新的查询

SELECT 
       @Domain "Domain",
       @Name "Name",
(
SELECT 
       ID  "ID",
       Value   "Value",
       (select 
        ID "@ID",
        Value  as "text()"      
        FOR XML PATH('Record'), ELEMENTS, TYPE )       
FROM   @TestTable
FOR XML PATH ('Content'), TYPE, ROOT('Contents')
)
FOR XML PATH ('Root')

欢迎您发布明确使用xml的修复程序。



 类似资料:
  • 我正在尝试编写用于XML检查的XML模式(XSD)。有一个元素包含枚举值和子元素。它的格式确实很奇怪,但被xml接受了。 XML元素能否同时包含文本和子元素? 我的案例: 我正在尝试编写xml模式(XSD)来验证格式。所需元素node1的文本有三个限制值。当文本的值等于“c”时,它还将包含一个子节点1。 例如,模式将通过以下情况: 或 或 但无论如何,它不会通过: 或 因为子节点1对于值“c”是必

  • 下面是一个函数(在处理注释的类中),用于创建注释元素 所有这些都有效,但我显然不知道我在用我指着的线做什么。但是我基本上想把消息放在评论元素中,就像这样: 但我所做的一切都是有效的,只是信息没有设置好。 所以我的问题是,这可能吗?如果可能,我必须怎么做?

  • 我有一个Windows窗体树视图,需要保存为xml文件。 TreeView的结构如下: 每个有孩子的TreeNode都需要保存为元素,每个没有孩子的TreeNode都需要保存为父TreeNode的属性 这意味着上述操作将产生以下xml: 我试着使用下面的代码,但当树节点没有孩子,树节点下面有孩子,我真的想不出一个好方法时,它就不起作用了。 编辑: 当前代码的问题是,如果我添加一个有任何子节点的Tr

  • 问题内容: 我有一个带有集合的类,它们是Hibernate管理的POJO。我也在使用 hbm.xml 文件映射我的实体。当用户转到管理屏幕时,我希望他将数据查看到表中,该表还将包含最近完成的工作。但是,只有访问可检测内容的详细信息页面,才能使用完整的修订集。 我的机会是显示最后的修订日期,该日期将作为每个实例的属性单独加载。所以我有这样的事情: detectable.hbm.xml 这是行不通的,

  • 我似乎找不到使用jackson xml注释生成如下xml的Pojo的方法: 我能最接近的是以下几点: 根POJO: 元素1 POJO: 元素2 POJO: 但这又返回了以下内容: 我不想显示“字符串”周围的元素标记。

  • 我正在使用JAXB来解封xml文件。这是我的元素特性代码,但是我想在元素特性中有一个特殊的元素顺序,像这样 我检查了一些@XmlType教程(propOrder = {}),但我找不到一种方法来订购元素列表,如这里的属性元素。 这是我的代码。 它总是抛出异常,因为我在propOrder中只定义了一个属性。但是由于属性是多重的,可能是一个或多个,我不知道如何实现它。或者你知道其他排序元素的方法吗 提