如何通过JavaScript在JSON中构建此XML结构



我有一个XML结构,我希望使用JavaScript以JSON格式构建它-如果可能的话,最好一直使用点表示法。:)

以下是XML-请注意,为了简单起见,这是一个伪结构!:)

<Items>
   <Item>
      <Name>Item 1</Name>
      <SubItems>
         <Item>
           <Name>Sub Item 1</Name>
         </Item>
      </SubItems>
   </Item>
   <Item>
      <Name>Item 2</Name>
   </Item>
</Items>

因此,当我(在服务器上)将JSON转换为XML时,输出应该如上所述。

我需要帮助开始做这件事。我在谷歌上搜索了一下,找不到任何关于如何做到这一点的例子。

提前感谢!

编辑:我正在使用NewtonSoft JSON for.NET将JSON转换为XML!

第2版:好的,我找到了原始JSON结构,可以正确地转换为XML-现在是:

var json = {
        "Items":
            {
                "Item":
                    [   
                        {
                            "Name": "Test 1" ,
                            "SubItems":
                            {
                                "Item":
                                    [
                                        {
                                            "Name":"Test 1"
                                        },
                                        {
                                            "Name":"Test 2"
                                        }
                                    ]
                            }
                        },
                        {
                            "Name":"Test 2"
                        }
                    ]
            }
    };

这将产生与上面定义的完全相同的XML结构。

现在,我该如何使用点表示法构建这个结构呢

编辑3:在Nikhil&Darin,我想明白了,但这只是回答了一个伪问题。但是,我将标记为已回答,并创建一个新问题。:)

第4版:我把我的分机贴到了标记的答案上。:)

这应该做到:

var items = [
              {"name":"Item 1","subitems":[
                {"name":"Subitem 1"}
              ]},
              {"name":"Item 2"}
            ];
var items = [ ];
var item1 = { };
item1.Name = 'Item 1';
item1.SubItems = [ ];
var subItem = { };
subItem.Name = 'Sub Item 1';
item1.SubItems.push(subItem);
items.push(item1);
var item2 = { };
item2.Name = 'Item 2';
items.push(item2);
var json = {};
json.Items = {};
json.Items.Item = new Array();
var item1 = {};
item1.Name = "Test 1"
item1.SubItems = new Array();
var subItem1 = {};
subItem1.Item = new Array();
subSubItem1 = {};
subSubItem1.Name = "Test 1";
subSubItem2 = {};
subSubItem2.Name = "Test 2";
subItem1.Item.push(subSubItem1);
subItem1.Item.push(subSubItem2);
item1.SubItems.push(subItem1);
var item2 = {};
item2.Name = "Test 2";
json.Items.Item.push(item1);
json.Items.Item.push(item2);

上述代码的输出为

{
    "Items": {
        "Item": [
            {
                "Name": "Test 1",
                "SubItems": [
                    {
                        "Item": [
                            {
                                "Name": "Test 1"
                            },
                            {
                                "Name": "Test 2"
                            }
                        ]
                    }
                ]
            },
            {
                "Name": "Test 2"
            }
        ]
    }
}

应该这样做:)

Nikhil回答了这个问题,并得到了神奇的勾号。:)-我用我写的代码来扩展他的答案,以获得我想要的结果。

在收到伪问题的答案后,我真正的问题是,我的结构中有不同的项类型,它们都共享Items根节点。

下面是我如何解决这个问题的一个伪例子。同样,Nikhil的答案是解决方案的基础,这要归功于他:)

假设我们有一个根节点,水果,我们有不同类型的水果。比方说,苹果和香蕉。

以下是我如何获得JSON结构(以及最终所需的XML转换输出):

// Create the JSON Object
var json = {};
// Create the Fruits Objects (Our root)
json.Fruits = {};
for (var i = 0; i < 3; i++){ 
    // Pseudo condition
    if (i == 0 || i == 1) {
        // Make sure we have an Apple array
        if(json.Fruits.Apple == undefined)
            json.Fruits.Apple = [];
        json.Fruits.Apple.push({
             "Color": "Green"
        });
     } else {
        // Make sure we have a Banana array
        if (json.Fruits.Banana == undefined)
            json.Fruits.Banana = [];
        json.Fruits.Banana.push({
             "Color": "Yellow" 
        });
    }
}

这将输出以下JSON:

{"Fruits":
   {"Apple":
      [
       {"Color":"Green"},
       {"Color":"Green"}
      ],
    "Banana":
      [
       {"Color":"Yellow"}
      ]
   }
}

最终,以下XML:

<Fruits>
  <Apple>
    <Color>Green</Color> 
  </Apple>
  <Apple>
    <Color>Green</Color> 
  </Apple>
  <Banana>
    <Color>Yellow</Color> 
  </Banana>
</Fruits>

相关内容

  • 没有找到相关文章

最新更新