2016-08-16 104 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中。