首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用节点名称和特定属性值获取特定节点及其子程序?

如何使用节点名称和特定属性值获取特定节点及其子程序?
EN

Stack Overflow用户
提问于 2015-05-21 21:44:07
回答 1查看 76关注 0票数 1

注意:我正在处理的文件,我事先不知道它们的结构,所以我不能使用XPath,这里是我的XPath文件的一个例子:

代码语言:javascript
复制
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes" ?>
<HWData>
<Header time="2013-05-29T13:39:34" uploaded="true" version="1.0" />
  <NE vendorName="Nokia Siemens Networks" NEId="WBTS-431">
    <EQHO vendorName="Nokia Siemens Networks" equipmentHolderId="173" >
        <UNIT vendorName="N" unitId="16" />
        <UNIT vendorName="NOKIA SIEMENS NETWORKS" unitId="225" />
    </EQHO>
    <EQHO vendorName="NSN" equipmentHolderId="40192" >
        <UNIT vendorName="AR" unitId="40267" />
    </EQHO>
  </NE>
  <NE vendorName="Nokia Siemens Networks" NEId="WBTS-261">
    <EQHO vendorName="Nokia Siemens Networks" equipmentHolderId="132" >
      <EQHO vendorName="Nokia Siemens Networks" equipmentHolderId="132-1">
        <UNIT vendorName="NN" unitId="1621" />
      </EQHO>
    </EQHO>
  </NE>
</HWData>

我想知道是否可以使用节点名"NE“和属性值NEID=”WBT-261“作为结果!

预期结果:

代码语言:javascript
复制
<NE vendorName="Nokia Siemens Networks" NEId="WBTS-261">
    <EQHO vendorName="Nokia Siemens Networks" equipmentHolderId="132" >
      <EQHO vendorName="Nokia Siemens Networks" equipmentHolderId="132-1">
        <UNIT vendorName="NN" unitId="1621" />
      </EQHO>
    </EQHO>
</NE>

有人能让我走上正确的道路吗?任何例子、想法或建议都会受到赞赏。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-25 13:23:56

将此方法作为字符串使用到节点:

代码语言:javascript
复制
 public static String NodeToString(String file,String moid) throws   SAXException, IOException, ParserConfigurationException{
String stringNode="";
InputStream in = new ByteArrayInputStream(file.getBytes("ISO-8859-1"));
Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(in);
NodeList nodeList = doc.getElementsByTagName("*");
for (int i = 0; i < nodeList.getLength(); i++) {
    if(nodeList.item(i) instanceof Element && ((Element)nodeList.item(i)).getAttribute("MOID").equalsIgnoreCase(moid)){

try
{

  // Set up the output transformer
  TransformerFactory transfac = TransformerFactory.newInstance();
  Transformer trans = transfac.newTransformer();
  trans.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
  trans.setOutputProperty(OutputKeys.INDENT, "yes");

  // Print the DOM node

  StringWriter sw = new StringWriter();
  StreamResult result = new StreamResult(sw);
  DOMSource source = new DOMSource(nodeList.item(i));
  trans.transform(source, result);
  stringNode = sw.toString();

  //System.out.println(xmlString);
}
catch (TransformerException e)
{
  e.printStackTrace();
}       


    }
}
return stringNode;

 } 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30384889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档