gpt4 book ai didi

java - 在java中嵌套XML标签时遇到问题

转载 作者:行者123 更新时间:2023-12-02 10:08:26 24 4
gpt4 key购买 nike

我正在尝试用 Java 创建一个 XML 文件,我希望得到以下输出:

<Row>
<customer_name> foo </customer_name>
<address>
<street_address> 123 Hemming Way </street_address>
<city> Brandon </city>
</address>
<region> Manitoba </region>
</Row>

我得到的输出没有嵌套 <address>像这样的标签:

<Row>
<customer_name> foo </customer_name>
<street_address> 123 Hemming Way </street_address>
<city> Brandon </city>
<region> Manitoba </region>
</Row>

我不知道如何包含 <address> 的单独嵌套对于 street_addresscity 。我的代码如下:

ResultSet rs = statement.executeQuery("Select  customer_name,street_address,city, region  from customers ");
ResultSetMetaData rsmd = rs.getMetaData();
int colCount = rsmd.getColumnCount();

while (rs.next()) {
Element row = doc.createElement("Row");
results.appendChild(row);
for (int i = 1; i <= colCount; i++) {
String columnName = rsmd.getColumnLabel(i);
Object value = rs.getObject(i);
Element node = doc.createElement(columnName);
node.appendChild(doc.createTextNode(value.toString()));
row.appendChild(node);
}
}

最佳答案

如果您只为所有列编写通用循环,则不能。您需要编写更明确的代码,因此 street_addresscity 嵌套在 address 标记内。

我建议您消除列循环,并为每一列编写特定的代码。

辅助方法可能是个好主意:

static Element addElement(Element parent, String name) {
Element elem = parent.getOwnerDocument().createElement(name);
parent.appendChild(elem);
return elem;
}

static void addElementValue(Element parent, String name, String value) {
addElement(parent, name).appendChild(parent.getOwnerDocument().createTextNode(value));
}

现在更容易编写逻辑:

while (rs.next()) {
Element row = addElement(results, "Row");
addElementValue(row, "customer_name", rs.getString("customer_name"));
Element address = addElement(row, "address");
addElementValue(address, "street_address", rs.getString("street_address"));
addElementValue(address, "city", rs.getString("city"));
addElementValue(row, "region", rs.getString("region"));
}

这也使您可以更轻松地更好地命名元素(如果您愿意的话),例如

while (rs.next()) {
Element row = addElement(results, "Customer");
addElementValue(row, "Name", rs.getString("customer_name"));
Element address = addElement(row, "Address");
addElementValue(address, "Street", rs.getString("street_address"));
addElementValue(address, "City", rs.getString("city"));
addElementValue(row, "Region", rs.getString("region"));
}

创建以下 XML:

<Customer>
<Name>foo</Name>
<Address>
<Street>123 Hemming Way</Street>
<City>Brandon</City>
</Address>
<Region>Manitoba</Region>
</Customer>

关于java - 在java中嵌套XML标签时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55169575/

24 4 0