如何在XML中表示单个节点的多个值?

时间:2016-08-23 20:33:46

标签: xml xpath xml-parsing

<?xml version="1.0" encoding="UTF-8"?>
    <code_details>
        <summer_redeem_code>54</summer_redeem_code>
        <winter_redeem_code>38</winter_redeem_code>
    </code_details>

在上面的代码中,将summer_redeem_code和winter_redeem_code视为要​​存储多个值的标记。想象一下,summer_redeem_code是传递的值,如54,56,57,但只有第一个,即54可以显示。此外,winter_redeem_code传递的值如38,48,58,但只能显示第一个,即38。

问题:我想弄清楚在XML中为单个元素/属性/标记表示多个值的最佳方法是什么,这样我才能显示的不仅仅是第一个现在可以吗?

目前这些标签是1:1关系,我想让它们1-many(如果这有意义?)。基本上,寻找可以容纳所有值的方法(标签)。

约束:
1)标签summer_redeem_code和winter_redeem_code无法删除,因为它们会破坏无法修改的解析器。
可能的解决方案:这可能需要将它们保留原样并引入一个带有新标签的新的1-many项目 - 可能是“redeem_codes”并将其置于其下。

1 个答案:

答案 0 :(得分:3)

最常见的方法是:

  1. 包裹的元素序列

    <codes>
      <winter>
        <winterCode>54</winterCode>
        <winterCode>58</winterCode>
        <winterCode>92</winterCode>
      </winter>
      <summer>
        <summerCode>85</summerCode>
        <summerCode>32</summerCode>
      </summer>
    </codes>
    
  2. (2)没有包装元素的相同

    <codes>
        <winterCode>54</winterCode>
        <winterCode>58</winterCode>
        <winterCode>92</winterCode>
        <summerCode>85</summerCode>
        <summerCode>32</summerCode>
     </codes>
    

    (3)列表值内容

     <codes>
        <winterCode>54 58 92</winterCode>
        <summerCode>85 32</summerCode>
    </codes>
    

    在这些之间进行选择涉及权衡:易于创建内容,易于验证,易于阅读内容,大小,与过去的兼容性,未来的可扩展性。只有你能决定什么适合你。