带有 if 语句的 for 循环中的 stringbuilder
stringbuilder in for loop with if statement
我的 java 程序有问题,它读取我的 xml 文件并向我显示我想要的内容....我在那里有 3 行,它向我显示 System.out.println 还有这 3 行我想要的具体内容。
但我必须return将这些行作为字符串逐行。这是我的另一个 class 中的问题,其中我使用 return 字符串 我只得到 xml 文件的第一行。所以我认为 return 值和 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();
}
}
}
这是我从字符串
创建 return 值的文件
我在这里从 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 我认为这会解决问题。
因为 return 字符串还应该遍历 xml 文件中的每一行,而不仅仅是 return 从第一行开始的字符串。
谢谢!
如果您达到 return
,您将离开该方法。因此,如果您找到类型为 Node.ELEMENT_NODE
的节点,您将构建 String s
、return 这个值并离开该方法。
您可以添加换行符而不是 returning 值,或者(如果允许更改 return 类型)使用 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 程序有问题,它读取我的 xml 文件并向我显示我想要的内容....我在那里有 3 行,它向我显示 System.out.println 还有这 3 行我想要的具体内容。
但我必须return将这些行作为字符串逐行。这是我的另一个 class 中的问题,其中我使用 return 字符串 我只得到 xml 文件的第一行。所以我认为 return 值和 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();
}
}
}
这是我从字符串
创建 return 值的文件我在这里从 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 我认为这会解决问题。 因为 return 字符串还应该遍历 xml 文件中的每一行,而不仅仅是 return 从第一行开始的字符串。
谢谢!
如果您达到 return
,您将离开该方法。因此,如果您找到类型为 Node.ELEMENT_NODE
的节点,您将构建 String s
、return 这个值并离开该方法。
您可以添加换行符而不是 returning 值,或者(如果允许更改 return 类型)使用 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);
}
}