gpt4 book ai didi

java - 带 if 语句的 for 循环中的 stringbuilder

转载 作者:太空宇宙 更新时间:2023-11-04 11:31:25 26 4
gpt4 key购买 nike

我的java程序有一个问题,它读取我的xml文件并显示我想要的内容......我在那里有3行,它向我显示了System.out.println,这3行也显示了我想要的特定内容。

但是我必须将这些行作为字符串返回。这是我的另一个类中的问题,其中 i 使用返回字符串,我只得到 xml 文件的第一行。所以我认为我的返回值和 for 循环有问题。这是我的 java 程序代码,它与 system.out.println 一起工作......

package org.java_websocket.xmlreader;

import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
import org.w3c.dom.Element;
import java.io.File;

public class websocketxmlrader {
public static void main(String argv[]){

try {

File fXmlFile = new File("...test123.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);


doc.getDocumentElement().normalize();


NodeList nList = doc.getElementsByTagName("item");

for (int temp = 0; temp < nList.getLength(); temp++) {

Node nNode = nList.item(temp);


if (nNode.getNodeType() == Node.ELEMENT_NODE) {

Element eElement = (Element) nNode;

String s1 = "{\"art.\":1234,";
String s2 = "\"value\":5678,";
String s3 = "\"set\":null,";
String s4 = "\"condition\":" + eElement.getElementsByTagName("length").item(0).getTextContent();
String s5= "\"height\"" + eElement.getElementsByTagName("weight").item(0).getTextContent();
String s6= "\"average\":5678,";
String s7= "\"content\":12,";
String s8= "\"div.\":78}";
String s = s1+s2+s3+s4+","+s5+","+s6+s7+s8;
System.out.println(s);

}
}
} catch (Exception e) {
e.printStackTrace();
}
}


}

这是我从字符串创建返回值的文件

我在这里从 public static void main(String argv[]){ ..... 更改为 .. public String wert(){....

Here is the full code

package packageWebSocket;

import java.io.File;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class websocketxmlrader {
public String wert(){
try {

File fXmlFile = new File("...test123.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);


doc.getDocumentElement().normalize();


NodeList nList = doc.getElementsByTagName("item");

for (int temp = 0; temp < nList.getLength(); temp++) {

Node nNode = nList.item(temp);


if (nNode.getNodeType() == Node.ELEMENT_NODE) {

Element eElement = (Element) nNode;

String s1 = "{\"art.\":1234,";
String s2 = "\"value\":5678,";
String s3 = "\"set\":null,";
String s4 = "\"condition\":" + eElement.getElementsByTagName("length").item(0).getTextContent();
String s5= "\"height\"" + eElement.getElementsByTagName("weight").item(0).getTextContent();
String s6= "\"average\":5678,";
String s7= "\"content\":12,";
String s8= "\"div.\":78}";
String s = s1+s2+s3+s4+","+s5+","+s6+s7+s8;

return s;
}



}
}catch (Exception e) {
e.printStackTrace();

}
return null;
}
}

我如何在这里使用 Stringbuilder 我认为这可以解决问题。因为返回String还应该循环遍历xml文件中的每一行,而不仅仅是从第一行返回一个字符串。

谢谢!

最佳答案

如果您达到return你离开这个方法。因此,如果您找到类型为 Node.ELEMENT_NODE 的节点你建立你的String s ,返回该值并离开该方法。

您可以添加换行符而不是返回值,或者(如果允许更改返回类型)使用 List<String>并为每行添加 s到列表中。

StringBuild sb = new StringBuilder(); // with linebreaks
List<String> lines = new ArrayList<>(); // each line one entry
for (int temp = 0; temp < nList.getLength(); temp++) {
Node nNode = nList.item(temp);
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
String s = ...;
if (sb.length() > 0) // add linebreak
sb.append(System.getProperty("line.separator"));
sb.append(s);
lines.add(s);
}
}

关于java - 带 if 语句的 for 循环中的 stringbuilder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43734534/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com