首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用JAVA代码将XML节点添加到现有XML中

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

Stack Overflow用户
提问于 2016-08-16 12:50:56
回答 4查看 279关注 0票数 0

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

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

代码语言:javascript
复制
<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文件中,其中的work 位于jmeterTestPlan-> hashTree -> hashTree ->最后一个节点下)

代码语言:javascript
复制
<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>

任何建议都将不胜感激!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-08-16 13:13:31

或者是丑陋的、简单化的方法:

将文件读入字符串:

代码语言:javascript
复制
File xmlFile = new File("jmeter.xml");
String xml;
try (Scanner scanner = new Scanner(xmlFile)) {
   xml= scanner.useDelimiter("\\A").next();
} 

找到职位:

代码语言:javascript
复制
int index = xml.indexOf("</HTTPSamplerProxy>");
index = xml.indexOf("</hashTree>", index);
index += "</hashTree>".length();

插入新的部分:

代码语言:javascript
复制
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字符串写回文件:

代码语言:javascript
复制
try (PrintWriter pw = new PrintWriter(xmlFile)) {
    pw.println(newXML);
}
票数 1
EN

Stack Overflow用户

发布于 2016-08-16 12:58:30

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返回。

票数 0
EN

Stack Overflow用户

发布于 2016-08-16 12:59:25

  • 使用一些免费的联机工具(http://xmlgrid.net/xml2xsd.html)从XML生成XSD
  • 从模式文件(xsd.php)创建JAXB类
  • 构建新对象并使用JAXB序列化它 JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class); Marshaller jaxbMarshaller = jaxbContext.createMarshaller(); jaxbMarshaller.marshal(customer, System.out);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38975460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档