我正在处理XML文件:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<IDFS>
<sunnydry>
<idf>4.3562937</idf>
<nbrOfRep>1.0</nbrOfRep>
</sunnydry>
<bresnahan>
<idf>4.3562937</idf>
<nbrOfRep>1.0</nbrOfRep>
</bresnahan>
<half>
<idf>3.9534276</idf>
<nbrOfRep>5.7123914</nbrOfRep>
</half>
</IDFS>
我使用这些函数来读取单词的任何idf和nbrOfRep
public float getIdfOfWordIndocument(String str)
{
try
{
return Float.parseFloat(document.getElementsByTagName(str.toLowerCase())
.item(0).getChildNodes().item(0).getTextContent());
}
catch(Exception e)
{
return 0.0f;
}
}
// To read nbr of reputation of a word
public float getNbrOfRepfWordIndocument(String str)
{
return Float.parseFloat(document.getElementsByTagName(str.toLowerCase())
.item(0).getChildNodes().item(1).getTextContent());
}
第一个给出错误,第二个给出错误的结果。但是,当我将代码更改为:
public float getIdfOfWordIndocument(String str)
{
try
{
return Float.parseFloat(document.getElementsByTagName(str.toLowerCase())
.item(0).getChildNodes().item(1).getTextContent());
}
catch(Exception e)
{
return 0.0f;
}
}
// To read nbr of reputation of a word
public float getNbrOfRepfWordIndocument(String str)
{
return Float.parseFloat(document.getElementsByTagName(str.toLowerCase())
.item(0).getChildNodes().item(3).getTextContent());
}
这两个函数都运行良好,但我无法理解为什么要进行此更改:
在第一名:.item(0) - &gt; .item(1) 和 在第二名:.item(1) - &gt; .item(3)
我使用此代码编写XML文件:
public void addToXML( String str, float idf, float nbrOfRep)
{
Element e = null;
Element name = null;
Element rootEle = (Element) document.getFirstChild();
// create data elements and place them under root
name = document.createElement(str.toLowerCase());
rootEle.appendChild(name);
e = document.createElement("idf");
e.appendChild(document.createTextNode(Float.toString(idf)));
name.appendChild(e);
e = document.createElement("nbrOfRep");
e.appendChild(document.createTextNode(Float.toString(nbrOfRep)));
name.appendChild(e);
// doc.appendChild(rootEle);
try{
Transformer tr = TransformerFactory.newInstance().newTransformer();
tr.setOutputProperty(OutputKeys.INDENT, "yes");
tr.setOutputProperty("{http://xml.apache.org/xslt}indent- amount","6");
// send DOM to file
try{
tr.transform(new DOMSource(document), new StreamResult( new FileOutputStream(filePath)));
}
catch (FileNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace(); }
}
catch (TransformerException te)
{
System.out.println(te.getMessage());
}
}// end
答案 0 :(得分:1)
元素之间有文本节点:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<IDFS>
<sunnydry><!-- Text node 0 here
--><idf>4.3562937</idf><!-- Text node 2 here
--><nbrOfRep>1.0</nbrOfRep>
</sunnydry>
<!-- ... -->
</IDFS>
所以:
idf
元素节点nbrOfRep
元素节点