用Java创建Nodelist XML

时间:2014-01-15 08:00:48

标签: java xml json parsing

我在尝试创建可与此json结构匹配的XML文件时遇到困难,

"properties": {
    "network_id": {
      "get_resource": "private_net"
    }, 
    "fixed_ips": [
      {
        "subnet_id": {
          "get_resource": "private_subnet"
        }
      }
    ]
  }

我的问题是尝试在XML中创建节点“fixed_ips”之后出现的符号[]。我试过的是这个,

//This part of the code is in a for loop
Element propertiesn = doc.createElement("properties");
serverports.appendChild(propertiesn);
Element networkidd = doc.createElement("network_id");
propertiesn.appendChild(networkidd);
Element getress = doc.createElement("get_resource");
getress.appendChild(doc.createTextNode("private_net"));
networkidd.appendChild(getress);

Element fixesips = doc.createElement("fixed_ips");
propertiesn.appendChild(fixesips);
Element qq = doc.createElement("qq");
fixesips.appendChild(qq);
Element subnetid = doc.createElement("subnet_id");
qq.appendChild(subnetid);
Element getresss = doc.createElement("get_resource");
getresss.appendChild(doc.createTextNode("private_subnet"+i6));
subnetid.appendChild(getresss);
Element qq2 = doc.createElement("qq");
fixesips.appendChild(qq2);

这就是我得到的,

 "properties": {
    "network_id": {
      "get_resource": "private_net"
    },
    "fixed_ips": [
      {
        "subnet_id": {
          "get_resource": "private_subnet1"
        }
      },
      []
    ]
  }

正如你所见,它已接近但不够接近。任何帮助,将不胜感激。提前谢谢。

1 个答案:

答案 0 :(得分:0)

字符'['表示集合类型,表示“fixed_ips”在“properties”元素中是集合类型。

即类属性     {

   public ArrayList<fixed_ips> list;
       setters & getters
}

class fixed_ips     {

   public Subnet_id sid;
       setters & getters
}

在文档创建类中它应该像

属性p =新属性;     ArrayList locallist = p.getList();

fixed_ips f1 = new fixed_ips();   f1.setSid( “东西”);

fixed_ips f2 = new fixed_ips();   f2.setSid( “东西”);

locallist.add(F2);

p.setList(localList);

然后你会得到那个'['。但问题是在localList中,如果你只添加一个fixed_ibs元素,'''符号变为可选。如果你在arrayList中有多个元素,那么只有'['会来。

<?xml version="1.0" encoding="UTF-8" ?>
    <properties>
        <network_id>
            <get_resource>private_net</get_resource>
        </network_id>
        <fixed_ips>
            <subnet_id>
                <get_resource>private_subnet</get_resource>
            </subnet_id>
        </fixed_ips>
                <fixed_ips>
            <subnet_id>
                <get_resource>private_subnet</get_resource>
            </subnet_id>
        </fixed_ips>
    </properties>
你会得到那个[。

输出

{
  "properties": {
    "network_id": { "get_resource": "private_net" },
    "fixed_ips": [
      {
        "subnet_id": { "get_resource": "private_subnet" }
      },
      {
        "subnet_id": { "get_resource": "private_subnet" }
      }
    ]
  }
}

谢谢