显然,我是Javascript的新手,我确信我的时间会短暂;这仅适用于工作中的小项目。如果有人帮我解决这个问题,我真的很感激。
我正在尝试设置一个显示外部.xml文件数据的页面,我完全无法控制。它的设置如下:
<lab id="1" name="A" inUse="14" offline="1" available="16">
</lab>
<lab id="2" name="B" inUse="11" offline="9" available="7">
<client id="x" status="available" mac="#" ip="#" name="COMPUTER1" />
<client id="y" status="available" mac="#" ip="#" name="COMPUTER2" />
</lab>
我使用以下代码显示数据:
<%
try
{
URL url = new URL("http://clstats.cc.nd.edu/public/xml-client.jsp");
InputStream input = url.openStream();
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document XMLInfo = builder.parse(input);
NodeList labs = XMLInfo.getElementsByTagName("lab");
int length = labs.getLength();
int i;
for (i = 0; i < length; i++)
{
Node current = labs.item(i);
String labName = current.getAttributes().getNamedItem("name").getTextContent();
String available = current.getAttributes().getNamedItem("available").getTextContent();
String offline = current.getAttributes().getNamedItem("offline").getTextContent();
String inUse = current.getAttributes().getNamedItem("inUse").getTextContent();
//Alternate the row colors
if( (i % 2) == 0)
{
%>
<tr style="background:url(#);">
<%
}
else
{
%>
<tr style="background:url(#);">
<%
}
%>
<td><%= labName %></td>
<td><%= available %></td>
<td><%= offline %></td>
<td><%= inUse %></td>
</tr>
</td>
<%
}
}
catch(Exception e){
}
%>
我可以毫不费力地显示“lab”标签中的信息,但我只想显示特定实验室内的数据,比方说实验室id = 2。有没有办法在单个特定的“lab”标签下显示“client”标签的属性?
谢谢,我希望我能够很好地解释这个问题。正如你所看到的,我几乎都是一个菜鸟,任何帮助都会非常感激。
预期结果:
<table>
<tr>
<td>Name</td>
<td>Status</td>
</tr>
<tr>
<td>COMPUTER1</td>
<td>Available</td>
</tr>
<tr>
<td>COMPUTER2</td>
<td>AVAILABLE</td>
</tr>
</table>
答案 0 :(得分:1)
您正在使用XMLInfo上的getElementsByTagName
来获取实验。我想你也可以使用Nodelist clients = current.getElementsByTagName("client");
然后迭代这些节点。
答案 1 :(得分:0)
看起来像java给我在这种情况下我想想你可以像这样使用Xpath:
InputStream input = url.openStream();
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document XMLInfo = builder.parse(input);
XPath xPath = XPathFactory.newInstance().newXPath();
Node myNode = xPath.evaluate("/lab[@id='2']", XMLInfo, XPathConstants.NODESET);
那应该是你的个人节点。