Я разбор файл XML, который имеет одну таблицу, как показано ниже:Передача целого числа в виде строки в Java
<table name="categoryAttributeTable">
<row>
<field name="CID">201</field>
<field name="name">page_title</field>
<field name="value">Spotlight</field>
</row>
<row>
<field name="CID">301</field>
<field name="name">page_title</field>
<field name="value">Oryx highlights</field>
</row>
<row>
<field name="CID">501</field>
<field name="name">page_title</field>
<field name="value">Little Taster</field>
</row>
</table>
Я хочу искать значение CID 301, для которого анс должен быть Oryx моментов, но я получаю Прожектор как ans, который является значением CID 201. Почему это может происходить ??? Мой Java-код:
public static void main(String argv[]) {
try {
File fXmlFile = new File("/home/media.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
doc.getDocumentElement().normalize();
System.out.println("Root element :"+ doc.getDocumentElement().getNodeName());
NodeList nList = doc.getElementsByTagName("table");
System.out.println("----------------------------");
String titlevalue=null;
String cidvalue=null;
String lidvalue=null;
List a = new ArrayList();
for (int temp = 0; temp < nList.getLength(); temp++) {
Node nNode = nList.item(temp);
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
if(eElement.getAttribute("name").equalsIgnoreCase("categoryAttributeTable"))
{
NodeList nList1 = eElement.getElementsByTagName("row");
for (int temp1 = 0; temp1 < nList1.getLength(); temp1++) {
Node nNode1 = nList1.item(temp1);
if (nNode1.getNodeType() == Node.ELEMENT_NODE) {
Element eElement1 = (Element) nNode1;
NodeList nList2 = eElement1.getElementsByTagName("field");
for (int temp2 = 0; temp2 < nList2.getLength(); temp2++) {
Node nNode2 = nList2.item(temp2);
if (nNode2.getNodeType() == Node.ELEMENT_NODE) {
Element eElement2 = (Element) nNode2;
if(eElement2.getAttribute("name").equalsIgnoreCase("value"))
{
titlevalue=eElement2.getTextContent();
// System.out.println(" Title value :: "+titlevalue);
}
if(eElement2.getAttribute("name").equalsIgnoreCase("CID") && (eElement2.getTextContent().equals(String.valueOf(301))))
{
System.out.println(" Title value :: "+titlevalue);
}
}
}
}
}
}
}
}
}
catch (Exception e) {
e.printStackTrace();
}
}
В eElement2.getAttribute("name").equalsIgnoreCase()
если я передать строку, то выход приходит, как и ожидалось, но если я передать целое число в виде строки, то она показывает анс предыдущий уровень в. Пожалуйста, помогите мне ...
Я не совсем понимаю, что именно происходит. «Если я передаю Integer как String» ... это не имеет смысла. Строка выглядит как «шесть» или «6», это не должно иметь никакого значения, если только вы не сделали ошибку, когда-либо ее обрабатывали. – Stultuske
Я хочу сказать, что eElement2.getTextContent(). Equals (""). Этот параметр принимает строковое значение. поэтому, когда я передаю любую строку внутри нее, она дает правильные значения. но я хочу передать целое число внутри, поэтому я передал String.valueOf (201), но он показывает значение предыдущей строки. –
Теперь у меня есть вопрос –