Java 使用具有int值的setAttribute方法
我试图将一个int值传递到Java 使用具有int值的setAttribute方法,java,dom,Java,Dom,我试图将一个int值传递到setAttribute方法中,但得到一个错误 无法将不兼容的类型int转换为字符串 我如何处理这个问题而不弄乱我的代码 我已尝试将字符串解析为int public class DAOxml implements DAOInterface { private Document doc; @Override public void addWatch(DTOwatch dtoWatch) { doc = getDOMDocumen
setAttribute
方法中,但得到一个错误
无法将不兼容的类型int转换为字符串
我如何处理这个问题而不弄乱我的代码
我已尝试将字符串解析为int
public class DAOxml implements DAOInterface {
private Document doc;
@Override
public void addWatch(DTOwatch dtoWatch) {
doc = getDOMDocument();
Element root = doc.getDocumentElement();
Element watch = doc.createElement("watch");
watch.setAttribute("ID", dtoWatch.id);
Element imageText = doc.createElement("imageText");
imageText.setTextContent(dtoWatch.imageText);
Element imageUrl = doc.createElement("imageUrl");
imageUrl.setTextContent(dtoWatch.imageUrl);
Element likes = doc.createElement("likes");
likes.setTextContent(String.valueOf(dtoWatch.likes));
Element dislikes = doc.createElement("dislikes");
dislikes.setTextContent(String.valueOf(dtoWatch.dislikes));
watch.appendChild(imageText);
watch.appendChild(imageUrl);
watch.appendChild(likes);
watch.appendChild(dislikes);
root.appendChild(watch);
writeToXML(doc);
}
@Override
public void deleteWatch(String ID) {
doc = getDOMDocument();
Element root = doc.getDocumentElement();
NodeList nodeList = root.getElementsByTagName("watch");
String sokID;
for (int i = 0; i < nodeList.getLength(); i++) {
Element watch = (Element) nodeList.item(i);
if (watch.hasAttributes()) {
sokID = watch.getAttribute("ID");
if (sokID.equalsIgnoreCase(ID)) {
root.removeChild(watch);
break;
}
}
}
writeToXML(doc);
}
@Override
public void updateWatch(DTOwatch dtoWatch) {
doc = getDOMDocument();
Element root = doc.getDocumentElement();
NodeList nodeList = root.getElementsByTagName("mobil");
String sokID;
for (int i = 0; i < nodeList.getLength(); i++) {
Element watch = (Element) nodeList.item(i);
if (watch.hasAttributes()) {
sokID = watch.getAttribute("ID");
if (sokID.equalsIgnoreCase(dtoWatch.id)) {
watch.getElementsByTagName("imageText").item(0).setTextContent(dtoWatch.imageText);
watch.getElementsByTagName("imageUrl").item(0).setTextContent(dtoWatch.imageUrl);
watch.getElementsByTagName("likes").item(0).setTextContent(String.valueOf(dtoWatch.likes));
watch.getElementsByTagName("dislikes").item(0).setTextContent(String.valueOf(dtoWatch.dislikes));
break;
}
}
}
writeToXML(doc);
}
@Override
public List<DTOwatch> getWatch() {
List<DTOwatch> watch = new ArrayList<>();
doc = getDOMDocument();
Element root = doc.getDocumentElement();
NodeList nodeList = root.getElementsByTagName("watch");
System.out.println(nodeList.getLength());
for (int i = 0; i < nodeList.getLength(); i++) {
Element watch = (Element) nodeList.item(i);
DTOwatch dtoWatch = new DTOwatch();
if (watch.hasAttributes()) {
String ID = watch.getAttribute("ID");
dtoWatch.id = id;
}
dtoWatch.imageText = watch.getElementsByTagName("imageText").item(0).getTextContent();
dtoWatch.imageUrl = watch.getElementsByTagName("imageUrl;").item(0).getTextContent();
dtoWatch.likes = Integer.parseInt(watch.getElementsByTagName("likes").item(0).getTextContent());
dtoWatch.dislikes = Integer.parseInt(watch.getElementsByTagName("dislikes").item(0).getTextContent());
watch.add(dtoWatch);
}
return watch;
}
private Document getDOMDocument() {
try {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
doc = db.parse(new File("watch.xml"));
} catch (SAXException ex) {
Logger.getLogger(DAOxml.class.getName() + ex.getMessage());
} catch (IOException | ParserConfigurationException ex) {
Logger.getLogger(DAOxml.class.getName() + ex.getMessage());
}
return doc;
}
private void writeToXML(Document doc) {
try {
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File("watch.xml"));
transformer.transform(source, result);
StreamResult consoleResult = new StreamResult(System.out);
transformer.transform(source, consoleResult);
} catch (TransformerException ex) {
Logger.getLogger(DAOxml.class.getName()).log(Level.SEVERE, null, ex);
}
}
公共类DAOxml实现DAO接口{
私人文件文件;
@凌驾
公共void addWatch(DTOwatch DTOwatch){
doc=getDOMDocument();
元素根=doc.getDocumentElement();
元素监视=doc.createElement(“监视”);
setAttribute(“ID”,dtoWatch.ID);
元素imageText=doc.createElement(“imageText”);
setTextContent(dtoWatch.imageText);
元素imageUrl=doc.createElement(“imageUrl”);
setTextContent(dtoWatch.imageUrl);
元素likes=doc.createElement(“likes”);
likes.setTextContent(String.valueOf(dtoWatch.likes));
元素不喜欢=doc.createElement(“不喜欢”);
dislikes.setTextContent(String.valueOf(dtoWatch.dislikes));
watch.appendChild(imageText);
appendChild(imageUrl);
看。看孩子(喜欢);
看。看孩子(不喜欢);
root.appendChild(watch);
可写xml(doc);
}
@凌驾
公共void deleteWatch(字符串ID){
doc=getDOMDocument();
元素根=doc.getDocumentElement();
NodeList NodeList=root.getElementsByTagName(“watch”);
绳索基德;
for(int i=0;i
我希望能够连接到我的XML文件,并能够通过我用javafx制作的gui向其添加内容,您可以尝试通过
String newString = Integer.toString(<int>);
String newString=Integer.toString();
根据setAttribute()
方法接受两个参数:属性名称和属性值。这两个参数都是字符串值。现在,这并不意味着XML模式将它们视为字符串。模式可以将属性定义为布尔值、整数或其他值。但Java中的setter始终采用字符串
所以你会
watch.setAttribute("ID", String.valueOf(dtoWatch.id));