我正在解析一个非常简单的XML文件,但我遇到的问题是当我返回子项数时。
我的XML文件:
<?xml version="1.1" encoding="ISO-8859-1"?>
<Sensors>
<Sensor ID="1">
<Path>C:\Test\s1</Path>
</Sensor>
<Sensor ID="2">
<Path>C:\Test\s2</Path>
</Sensor>
<Sensor ID="3">
<Path>C:\Test\s3</Path>
</Sensor>
</Sensors>
我的Java代码是这样的:
private void checkSensors()
{
String name = "C:\\Test\\sensors.xml";
File fileName = new File(name);
if (!fileName.exists())
{
System.out.println("File doesn't Exists!!!!!");
}
else
{
System.out.println("File Exists, moving on..");
sensorDoc = getDocument(name);
int count = 0;
Element root = sensorDoc.getDocumentElement();
Node sensor = root.getFirstChild();
while (sensor != null)
{
count++;
sensor = sensor.getNextSibling();
}
System.out.println("There are: " + count + " sensors.");
}
}
private static Document getDocument(String name)
{
try
{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setIgnoringComments(true);
factory.setIgnoringElementContentWhitespace(true);
factory.setValidating(true);
DocumentBuilder builder = factory.newDocumentBuilder();
builder.setErrorHandler(null);
System.out.println("Parsing...");
return builder.parse(new InputSource(name));
}
catch (Exception e)
{
return null;
}
}
输出结果是
"There are: 7 sensors."
虽然应该说
"There are: 3 sensors."
我已经尝试删除空白区域,因为我在很多关于空白的帖子中都读到过,但这并没有改变任何东西,我也尝试删除XML文档中其中一个传感器的属性,但这也没有改变任何东西。
我也尝试使用NodeList,然后输出getLength()
,但也没有返回正确数量的传感器。
有什么想法吗?
答案 0 :(得分:1)
你试过了吗?
NodeList entities = sensorDoc.getElementsByTagName("Sensor");
System.out.println("There are: " + entities.getLength()+ " sensors.");
输出是什么?
答案 1 :(得分:0)
getNextSibling返回紧跟此节点后的节点。这也意味着子节点Path。因此,你有更多的项目。