You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在XML文件中存储点列表及双精度数值列表?

嘿,刚接触XML的话,这两个问题确实是新手常会碰到的,我来给你分享几个实用的解决方案~

一、存储点列表的常见方式

XML的灵活性很强,存储点列表主要看你对可读性和紧凑性的需求,这里有两种主流方案:

方式1:结构化子元素(可读性优先)

这种方式最直观,每个点用独立的<point>元素包裹,内部再拆分<x>和<y>子元素,非常适合人类阅读和后续的解析维护:

<state>
  <name>Name state 2</name>
  <x>x</x>
  <y>y</y>
  <width>w</width>
  <height>h</height>
  <nlinks>2</nlinks>
  <effect>1</effect>
  <!-- 点列表部分 -->
  <points>
    <point>
      <x>123.45</x>
      <y>67.89</y>
    </point>
    <point>
      <x>456.78</x>
      <y>90.12</y>
    </point>
  </points>
</state>

方式2:紧凑分隔文本(节省空间优先)

如果想让XML文件体积更小,可以把每个点的坐标用分隔符(比如逗号、分号)拼接成字符串,放在单个元素里;也可以用属性存储:

<state>
  <name>Name state 2</name>
  <x>x</x>
  <y>y</y>
  <width>w</width>
  <height>h</height>
  <nlinks>2</nlinks>
  <effect>1</effect>
  <!-- 用分号分隔点,逗号分隔坐标 -->
  <points>123.45,67.89;456.78,90.12</points>
  <!-- 或者用属性批量存储 -->
  <!-- <points point1="123.45,67.89" point2="456.78,90.12" /> -->
</state>

这种方式需要你在解析时自己拆分字符串,适合对文件大小有明确要求的场景。

二、高效存储双精度(double)数值列表的方案

这里的“高效”分两种:解析效率和存储体积效率,可以根据你的需求选择:

方式1:结构化子元素(解析友好)

和点列表的结构化思路一致,每个double值用独立的<value>元素包裹,解析时直接读取文本转成double即可,几乎不用额外处理:

<state>
  <name>Name state 2</name>
  <x>x</x>
  <y>y</y>
  <width>w</width>
  <height>h</height>
  <nlinks>2</nlinks>
  <effect>1</effect>
  <!-- double数值列表 -->
  <doubleValues>
    <value>3.141592653589793</value>
    <value>2.718281828459045</value>
    <value>1.4142135623730951</value>
  </doubleValues>
</state>

方式2:分隔符紧凑存储(体积高效)

如果想减少XML的标签开销,把所有double值用空格、逗号或分号分隔,放在单个元素里,能大幅压缩文件体积:

<state>
  <name>Name state 2</name>
  <x>x</x>
  <y>y</y>
  <width>w</width>
  <height>h</height>
  <nlinks>2</nlinks>
  <effect>1</effect>
  <!-- 用空格分隔的double列表 -->
  <doubleValues>3.141592653589793 2.718281828459045 1.4142135623730951</doubleValues>
</state>

注意:如果你的数值会用逗号作为小数分隔符(比如部分欧洲地区的格式),建议换用分号或其他自定义分隔符,避免解析时出现歧义。

极端场景优化:CDATA包裹

如果你的double列表特别长,且担心数值里的特殊字符干扰XML解析,可以用CDATA块包裹内容:

<state>
  <name>Name state 2</name>
  <x>x</x>
  <y>y</y>
  <width>w</width>
  <height>h</height>
  <nlinks>2</nlinks>
  <effect>1</effect>
  <doubleValues><![CDATA[3.141592653589793,2.718281828459045,1.4142135623730951]]></doubleValues>
</state>

内容的提问来源于stack exchange,提问作者Juliette Marquis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:39:53