使用JAVA代码将XML节点添加到现有XML

时间:2016-08-16 12:50:56

标签: java xml jmeter

我有一个现有的XMLJMeter JMX文件)。在Java中实现以下用例的最佳方法/ API是什么?

我的目标是插入以下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文件,其中 HERE 是(在jmeterTestPlan-&gt; hashTree - &gt; hashTree - &gt;最后一个节点下)

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

任何建议都将非常感谢!

4 个答案:

答案 0 :(得分: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 String写回文件:

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

答案 1 :(得分: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

答案 2 :(得分:0)

答案 3 :(得分:-1)

如果您有此XML的XSD文件,那么您可以使用JAXB(例如使用Maven JAXB插件)轻松生成Java类,并将XML文件解组为对象实例树。然后,您可以以编程方式添加所需的实例,并将树编组回XML。