Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用node';s名称和特定属性值?_Java_Xml_Parsing_Xml Parsing - Fatal编程技术网

Java 如何使用node';s名称和特定属性值?

Java 如何使用node';s名称和特定属性值?,java,xml,parsing,xml-parsing,Java,Xml,Parsing,Xml Parsing,注意:我处理的xml文件事先不知道其结构,因此无法使用XPath 以下是我的xml文件示例: <?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" N

注意:我处理的xml文件事先不知道其结构,因此无法使用XPath 以下是我的xml文件示例:

<?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=“WBTS-261”来生成孔

预期结果:

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


有人能告诉我正确的方法吗?任何例子、想法或建议都将不胜感激。。谢谢

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

 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;

 } 
公共静态字符串NodeToString(字符串文件,字符串moid)抛出SAXException、IOException、ParserConfiguration异常{
字符串stringNode=“”;
InputStream in=newbytearrayinputstream(file.getBytes(“ISO-8859-1”);
Document doc=DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(in);
NodeList NodeList=doc.getElementsByTagName(“*”);
for(int i=0;i
有几种可能性,有各种工具可以实现这一点。也许先看看这个,然后用搜索引擎找到你需要的。