2016-08-16 106 views
0

我有一个现有的XMLJMeter JMX文件)。在Java中实现以下用例的最佳方式/ API是什么?使用JAVA代码将XML节点添加到现有的XML

我的目标是插入以下XML(创建新文件):

<BackendListener guiclass="A" testclass="B" testname="C" enabled="true"> 
     <elementProp name="D" elementType="E" guiclass="F" testclass="G" enabled="true"> 
      <collectionProp name="H"/> 
     </elementProp> 
     <stringProp name="classname">I</stringProp> 
</BackendListener> 
<hashTree/> 

为以下现有XML文件,那里的工作这里是(下jmeterTestPlan-> hashTree - > hashTree - >最后一个节点)

<jmeterTestPlan version="A"> 
    <hashTree> 
    <TestPlan guiclass="A" testclass="B" testname="C" enabled="true"> 

    </TestPlan> 
    <hashTree> 
     <ThreadGroup guiclass="D" testclass="E" testname="F" enabled="true"> 

     </ThreadGroup> 
     <hashTree> 
     <HTTPSamplerProxy guiclass="G" testclass="H" testname="I" enabled="true"> 
     </HTTPSamplerProxy> 
     <hashTree/> 
     </hashTree> 

     ****HERE**** 

    </hashTree> 
    </hashTree> 
</jmeterTestPlan> 

任何建议将非常感激!

回答

1

或者丑陋的,简单化的方法:

阅读文件作为一个字符串:

File xmlFile = new File("jmeter.xml"); 
String xml; 
try (Scanner scanner = new Scanner(xmlFile)) { 
    xml= scanner.useDelimiter("\\A").next(); 
} 

找到的位置:

int index = xml.indexOf("</HTTPSamplerProxy>"); 
index = xml.indexOf("</hashTree>", index); 
index += "</hashTree>".length(); 

插入新的部分:

String newPart = "<BackendListener guiclass=\"A\" testclass=\"B\" testname=\"C\" enabled=\"true\"> 
     <elementProp name=\"D\" elementType=\"E\" guiclass=\"F\" testclass=\"G\" enabled=\"true\"> 
      <collectionProp name=\"H\"/> 
     </elementProp> 
     <stringProp name=\"classname\">I</stringProp> 
</BackendListener> 
<hashTree/>"; 
String newXML = xml.substring(0, index) + newPart + xml.substring(index) 

编写新的XML字符串返回到该文件:

try (PrintWriter pw = new PrintWriter(xmlFile)) { 
    pw.println(newXML); 
} 
0

在java中有很多库可以用来对XML进行操作。请看下面的内容:

如果您想要解析大型XML文件和/或不想使用大量内存,则可以使用此解析器。

http://download.oracle.com/javase/6/docs/api/javax/xml/parsers/SAXParserFactory.html

例子:http://www.mkyong.com/java/how-to-read-xml-file-in-java-sax-parser/

的DOMParser

,如果你需要做的XPath查询或需要具有完整的DOM可以使用此解析器。

http://download.oracle.com/javase/6/docs/api/javax/xml/parsers/DocumentBuilderFactory.html

例子:http://www.mkyong.com/java/how-to-read-xml-file-in-java-dom-parser/

使用这个你可以做的XML的编组得到实例的新实例添加到末尾,后来解编,以获得对XML的支持

-1

如果你有这个XML的XSD文件,那么您可以使用JAXB轻松生成Java类(例如使用Maven JAXB插件),并将您的XML文件解组为一个对象实例树。然后,您可以通过编程方式将您想要的实例添加到XML中。