在java中,使用for循环对使用int无效
我正在尝试使用java创建xml树。在java中,使用for循环对使用int无效,java,xml,Java,Xml,我正在尝试使用java创建xml树。 我对爪哇有了全新的认识。 我想找到一些这方面的代码。 package ep; import java.io.File; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transfo
我对爪哇有了全新的认识。
我想找到一些这方面的代码。
package ep;
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
public class Tclass {
public static void main(String argv[]) {
try {
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
// root elements
Document doc = docBuilder.newDocument();
Element rootElement = doc.createElement("products");
doc.appendChild(rootElement);
for(int x = 1; x < 20; x = x+1) {
// staff elements
Element staff = doc.createElement("product_id");
rootElement.appendChild(staff);
// set attribute to staff element
Attr attr = doc.createAttribute("value");
// shorten way
staff.setAttribute("value", x);
}
// write the content into xml file
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File("file.xml"));
// Output to console for testing
// StreamResult result = new StreamResult(System.out);
transformer.transform(source, result);
System.out.println("File saved!");
} catch (ParserConfigurationException pce) {
pce.printStackTrace();
} catch (TransformerException tfe) {
tfe.printStackTrace();
}
}
}
封装ep;
导入java.io.File;
导入javax.xml.parsers.DocumentBuilder;
导入javax.xml.parsers.DocumentBuilderFactory;
导入javax.xml.parsers.parserConfiguration异常;
导入javax.xml.transform.Transformer;
导入javax.xml.transform.TransformerException;
导入javax.xml.transform.TransformerFactory;
导入javax.xml.transform.dom.DOMSource;
导入javax.xml.transform.stream.StreamResult;
导入org.w3c.dom.Attr;
导入org.w3c.dom.Document;
导入org.w3c.dom.Element;
导入org.w3c.dom.Node;
公共类Tclass{
公共静态void main(字符串argv[]){
试一试{
DocumentBuilderFactory docFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder=docFactory.newDocumentBuilder();
//根元素
Document doc=docBuilder.newDocument();
Element rootElement=doc.createElement(“产品”);
doc.appendChild(rootElement);
对于(int x=1;x<20;x=x+1){
//工作人员
元素职员=doc.createElement(“产品标识”);
根元素.appendChild(staff);
//将属性设置为staff元素
Attr Attr=doc.createAttribute(“值”);
//缩短道路
staff.setAttribute(“值”,x);
}
//将内容写入xml文件
TransformerFactory TransformerFactory=TransformerFactory.newInstance();
Transformer Transformer=transformerFactory.newTransformer();
DOMSource=新的DOMSource(doc);
StreamResult=newstreamresult(新文件(“File.xml”);
//输出到控制台进行测试
//StreamResult结果=新的StreamResult(System.out);
变换(源、结果);
System.out.println(“文件已保存!”);
}捕获(ParserConfiguration异常pce){
pce.printStackTrace();
}捕获(TransformerException tfe){
tfe.printStackTrace();
}
}
}
它的工作非常出色。但我尝试在它们上使用for循环来创建多个元素,然后在第40行返回错误
type元素中的方法setAttribute(String,String)不适用于参数(String,int)
我有什么问题吗
请帮忙。
谢谢…当您这样做时:
staff.setAttribute("value", x);
替换为:
staff.setAttribute("value", ""+x);
你应该替换
staff.setAttribute("value", x);
与
元素#setAttribute(名称、值)
,此处该值是一个简单的字符串
,在设置时不会对其进行解析。因此,任何标记(例如被识别为实体引用的语法)都被视为文本
因此,使用String
作为值,而不是任何其他类型。因此,将int
值转换为字符串
staff.setAttribute("value", Integer.toString(i)); // preferable as static
或
或
或
您正在传入一个
int
,而它需要一个字符串
staff.setAttribute("value", String.valueOf(x));
将for()-loop
替换为以下for(整数x=1;x<20;x=x+1)
staff.setAttribute("value", x.toString());
谢谢这是解决。。。。(y) 您能否发布新的答案,以获取staff.setAttribute的随机数(“value”,此处为随机数)代码>像微笑:)我正在使用这个Random rand=newrandom();整数值=兰特·奈克斯汀(50);//缩短方式选项卡\u id.setAttribute(“值”、“值”)代码>但我想从20到50开始。它的起始值为0到50,您可以保持Random rand=new Random()代码>这一行超出了你的循环。很抱歉,这不是完美的工作我想将范围更改为0到50我想b/w 20到50
staff.setAttribute("value", ""+i);
staff.setAttribute("value", String.valueOf(i)); // preferable as static
staff.setAttribute("value", String.valueOf(x));
staff.setAttribute("value", x.toString());