Javascript 如何声明两个名称相同但属性不同的对象

Javascript 如何声明两个名称相同但属性不同的对象,javascript,xml,javascript-objects,Javascript,Xml,Javascript Objects,我正在使用node.js中的函数创建js对象,然后将其转换为XML。xml格式模板要求具有两个名称相同但值不同的属性,例如: <?xml version="1.0" encoding="utf-8"?> <XMLExample> <Person id="123ok" type="student"> <searchable>true</searchable> <valid>true</valid> </P

我正在使用node.js中的函数创建js对象,然后将其转换为XML。xml格式模板要求具有两个名称相同但值不同的属性,例如:

<?xml version="1.0" encoding="utf-8"?>
<XMLExample>

<Person id="123ok" type="student">
<searchable>true</searchable>
<valid>true</valid> 
</Person>

<Person name="Aiana" type="student" parentPersonId="123ok">
<lastName>Ali</lastName>
<grade>9</grade>
<gradYear>2020</gradYear>
</Person>

</XMLExample>

这听起来像是一个对象数组,而不是一个对象

你不能这样做,但你可以使用对象数组

var futureXMLObject = {
  "Person": [
    {
      "@id": "123ok",
      "@type": "student"
     },
     {
       "@name": "Aiana",
       "@type": "student",
     }
   ]
}
for (var person of futureXMLObject['Person']) {
  console.log(person);
}

这是不可能的。如何访问对象中的对象
futureXMLObject['Person']
无法工作,因为它无法返回两个对象

您是否考虑过使用数组

var futureXMLObj = {
    "Persons": [
        {
            "@id": "123ok",
            "@type": "student"
        },
        {
            "@name": "Aiana",
            "@type": "student",
            "@parentPersonId": "123ok"
        }
    ]
};

这是评论,不是回答。如果你提供一个你建议的代码示例,这将是一个答案。从技术上讲,这是正确的,但是
“Person”
键名让我恼火。按照惯例,因为它是一个包含多个
人的数组,所以应该称为
var futureXMLObj = {
    "Persons": [
        {
            "@id": "123ok",
            "@type": "student"
        },
        {
            "@name": "Aiana",
            "@type": "student",
            "@parentPersonId": "123ok"
        }
    ]
};