gpt4 book ai didi

java - JAVA 中的 org.w3c.dom.Document

转载 作者:行者123 更新时间:2023-12-01 11:41:33 24 4
gpt4 key购买 nike

我正在使用 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());
}

这两个函数都工作得很好,但我不明白为什么我必须做出这样的改变:

In 1st : .item(0) -> .item(1) and In 2nd : .item(1) -> .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

最佳答案

元素之间有文本节点:

<?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>

所以:

  1. 节点0:文本节点
  2. 节点1:idf元素节点
  3. 节点2:文本节点
  4. 节点 3:nbrOfRep 元素节点

关于java - JAVA 中的 org.w3c.dom.Document,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29484152/

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