如何使用javascript从嵌套标记中提取?

如何使用javascript从嵌套标记中提取?,java,xml,Java,Xml,显然,我对Javascript是新手,我确信我使用它的时间很短;这只是工作中的一个小项目。如果有人能帮我解决这个问题,我将不胜感激 我正在尝试设置一个显示外部.xml文件中数据的页面,而我完全无法控制该文件。其设置如下所示: <lab id="1" name="A" inUse="14" offline="1" available="16"> </lab> <lab id="2" name="B" inUse="11" offline="9" available="

显然,我对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>
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);

我使用以下代码用表格显示数据:

<%
    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”标记中的信息没有问题,但我只想显示特定实验室中的数据,假设lab id=2。有没有一种方法可以在单个特定的“实验室”标记下显示“客户机”标记的属性

谢谢,我希望我对这个问题解释得足够好。正如你所看到的,我几乎是个傻瓜,任何帮助都将不胜感激

预期结果:

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

名称
地位
计算机1
可用
计算机2
可用

您正在使用XMLInfo上的
getElementsByTagName
获取实验室。我认为您还可以使用
nodelistclients=current.getElementsByTagName(“客户端”)然后遍历这些节点。

在我看来像java在这种情况下,我认为可以像这样使用Xpath:

<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>
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);

这将得到单个节点。

这是什么?那不是JavaScript@西姆·维达斯:老实说,我不确定。我刚才的回答是基于我对XML处理的理解。。好。。几乎是我见过的所有XML库。:)谢谢你,伙计,这就成功了。我很感激。谢谢大家!