簡體   English   中英

使用JAVA代碼將XML節點添加到現有XML

[英]Add XML node to existing XML using JAVA code

我有一個現有的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文件中,此處的工作在此處 (在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>

任何建議將不勝感激!

或者是丑陋,簡單的方法:

以字符串形式讀取文件:

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);
}

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

如果您有用於該XML的XSD文件,則可以使用JAXB(例如,使用Maven JAXB插件)輕松地從Java類中生成Java類,並將XML文件解組為對象實例樹。 然后,您可以以編程方式添加所需的實例,然后將樹編組回XML。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM