当前位置: 首页 > news >正文

html5网站实例汕头网站外包

html5网站实例,汕头网站外包,大连网站快速排名提升,为什么要建设档案网站mongodb json总览 为什么将XML转换为JSON以在MongoDB中原始使用#xff1f; 由于MongoDB使用JSON文档存储记录#xff0c;就像表和行将记录存储在关系数据库中一样#xff0c;我们自然需要将XML转换为JSON。 某些应用程序可能需要存储原始#xff08;未修改的#xff09;… mongodb json 总览 为什么将XML转换为JSON以在MongoDB中原始使用 由于MongoDB使用JSON文档存储记录就像表和行将记录存储在关系数据库中一样我们自然需要将XML转换为JSON。 某些应用程序可能需要存储原始未修改的JSON因为在如何构造数据方面存在不确定性。 有数百种基于XML的标准 。 如果应用程序要处理不遵循相同标准的XML文件则数据的结构将存在不确定性。 为什么要使用Spring Batch Spring Batch提供了可重用的功能这些功能在处理大量记录时是必不可少的而其他功能则可以实现高容量和高性能的批处理作业。 Spring网站已很好地记录了Spring Batch 。 有关Spring Batch的其他教程请参阅我以前的文章“ 使用Spring Batch处理CSV” 。 0 –将XML转换为JSON以在MongoDB中与Spring Batch示例应用程序一起使用 该示例应用程序转换XML文档该XML文档是用于配置音乐播放列表的“策略”。 该策略旨在类似于真实的网络安全配置文档。 它是一个简短的文档但说明了如何搜索复杂的XML文档。 我们将采用本教程的方法是处理各种样式的XML文件。 我们希望能够处理意外情况。 这就是为什么我们保持数据“原始”的原因。 1 –项目结构 它是典型的Maven结构。 我们为此示例应用程序提供了一个软件包。 XML文件位于src / main / resources中 。 2 –项目依赖性 除了典型的Spring Boot依赖关系之外我们还包括嵌入式MongoDB数据库和JSON处理的依赖关系。 ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.michaelcgood/groupIdartifactIdmichaelcgood-spring-batch-mongodb/artifactIdversion0.0.1/versionpackagingjar/packagingnamemichaelcgood-spring-batch-mongodb/namedescriptionMichael C Good - XML to JSON MongoDB Spring Batch Example/descriptionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion1.5.7.RELEASE/versionrelativePath / !-- lookup parent from repository --/parentpropertiesproject.build.sourceEncodingUTF-8/project.build.sourceEncodingproject.reporting.outputEncodingUTF-8/project.reporting.outputEncodingjava.version1.8/java.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-batch/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdde.flapdoodle.embed/groupIdartifactIdde.flapdoodle.embed.mongo/artifactIdversion1.50.5/version/dependencydependencygroupIdcz.jirutka.spring/groupIdartifactIdembedmongo-spring/artifactIdversionRELEASE/version/dependencydependencygroupIdorg.json/groupIdartifactIdjson/artifactIdversion20170516/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-mongodb/artifactId/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/project3 – XML文档 这是为本教程创建的示例策略文档。 它的结构基于真实的网络安全策略文档。 请注意文档的父项是Policy标记。 重要信息位于“组”标签内。 查看标记内的值例如Policy中的ID或status中的日期。 在这个小文档中有很多信息需要考虑。 例如还有XML名称空间xmlns。 在本教程的其余部分中我们不会涉及到这一点但是根据您的目标可能需要为其添加逻辑。 ?xml version1.0? Policy xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance styleSTY_1.1 idNRD-1status date2017-10-18draft/statustitle xmlns:xhtmlhttp://www.w3.org/1999/xhtmlGuide to the Configuration of Music Playlist/titledescription xmlns:xhtmlhttp://www.w3.org/1999/xhtml This guide presents a catalog of relevantconfiguration settings for a playlist that I listen to while I work on software development.html:br xmlns:htmlhttp://www.w3.org/1999/xhtml/html:br xmlns:htmlhttp://www.w3.org/1999/xhtml/Providing myself with such guidance reminds me how to efficientlyconfigure my playlist. Lorem ipsum html:i xmlns:htmlhttp://www.w3.org/1999/xhtmlLorem ipsum,/html:i and Lorem ipsum. Some examplehtml:i xmlns:htmlhttp://www.w3.org/1999/xhtmlLorem ipsum/html:i, which are Lorem ipsum./descriptionGroup idremediation_functionstitle xmlns:xhtmlhttp://www.w3.org/1999/xhtml Remediation functions used by the SCAP Security Guide Project/titledescription xmlns:xhtmlhttp://www.w3.org/1999/xhtml XCCDF form of the various remediation functions as used byremediation scripts from the SCAP Security Guide Project/descriptionValue idis_the_music_good prohibitChangestrue title xmlns:xhtmlhttp://www.w3.org/1999/xhtml Remediation function to fix bad playlist/titledescription xmlns:xhtmlhttp://www.w3.org/1999/xhtml Function to fix bad playlist.Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsumLorem ipsumLorem ipsumLorem ipsumLorem ipsum/descriptionvaluefunction fix_bad_playlist {# Load function arguments into local variablesLorem ipsumLorem ipsumLorem ipsum# Check sanity of the inputif [ $# Lorem ipsum ]thenecho Usage: Lorem ipsumecho Aborting.exit 1fi}/value/Value/Group/Policy4 – MongoDB配置 在下面我们指定我们使用的是嵌入式MongoDB数据库使它可被捆绑在便利注释SpringBootApplication中的组件扫描发现并指定mongoTemplate将是bean。 package com.michaelcgood;import java.io.IOException; import cz.jirutka.spring.embedmongo.EmbeddedMongoFactoryBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.mongodb.core.*; import com.mongodb.MongoClient;Configuration public class MongoConfig {private static final String MONGO_DB_URL localhost;private static final String MONGO_DB_NAME embeded_db;Beanpublic MongoTemplate mongoTemplate() throws IOException {EmbeddedMongoFactoryBean mongo new EmbeddedMongoFactoryBean();mongo.setBindIp(MONGO_DB_URL);MongoClient mongoClient mongo.getObject();MongoTemplate mongoTemplate new MongoTemplate(mongoClient, MONGO_DB_NAME);return mongoTemplate;} }5 –处理XML到JSON 我们的Spring Batch Job的step1包含调用三个方法以帮助将XML转换为JSON。 我们将分别进行审查。 Beanpublic Step step1() {return stepBuilderFactory.get(step1).tasklet(new Tasklet() {Overridepublic RepeatStatus execute(StepContribution stepContribution, ChunkContext chunkContext) throws Exception {// get path of file in src/main/resourcesPath xmlDocPath Paths.get(getFilePath());// process the file to jsonString json processXML2JSON(xmlDocPath);// insert json into mongodbinsertToMongo(json);return RepeatStatus.FINISHED;}}).build();}5.1 – getFilePath 此方法只是获取作为参数传递给方法processXML2JSON的文件路径。 注意 ClassLoader正在帮助我们在资源文件夹中找到XML文件。 // no parameter method for creating the path to our xml fileprivate String getFilePath(){String fileName FakePolicy.xml;ClassLoader classLoader getClass().getClassLoader();File file new File(classLoader.getResource(fileName).getFile());String xmlFilePath file.getAbsolutePath();return xmlFilePath;}5.2 – processXML2JSONxmlDocPath getFilePath返回的字符串作为参数传递到此方法中。 从XML文件的字符串创建一个JSONOBject。 // takes a parameter of xml path and returns json as a stringprivate String processXML2JSON(Path xmlDocPath) throws JSONException {String XML_STRING null;try {XML_STRING Files.lines(xmlDocPath).collect(Collectors.joining(\n));} catch (IOException e) {e.printStackTrace();}JSONObject xmlJSONObj XML.toJSONObject(XML_STRING);String jsonPrettyPrintString xmlJSONObj.toString(PRETTY_PRINT_INDENT_FACTOR);System.out.println(PRINTING STRING ::::::::::::::::::::: jsonPrettyPrintString);return jsonPrettyPrintString;}5.3 – insertToMongojson 我们将已解析的JSON插入MongoDB文档中。 然后我们在Autowired mongoTemplate的帮助下将此文档插入名为“ foo”的集合中。 // inserts to our mongodbprivate void insertToMongo(String jsonString){Document doc Document.parse(jsonString);mongoTemplate.insert(doc, foo);}6 –查询MongoDB 我们的Spring Batch Job的step2包含我们的MongoDB查询。 mongoTemplate.collectionExists基于集合的存在返回一个布尔值。 mongoTemplate.getCollection“ foo”。find返回集合中的所有文档。 alldocs.toArray返回一个DBObjects数组。 然后我们将调用以下三种方法我们将在下面分别进行回顾。 public Step step2(){return stepBuilderFactory.get(step2).tasklet(new Tasklet(){Overridepublic RepeatStatus execute(StepContribution stepContribution, ChunkContext chunkContext) throws Exception{// all printing out to console removed for posts brevity// checks if our collection existsBoolean doesexist mongoTemplate.collectionExists(foo);// show all DBObjects in foo collectionDBCursor alldocs mongoTemplate.getCollection(foo).find();ListDBObject dbarray alldocs.toArray();// execute the three methods we defined for querying the foo collectionString result doCollect();String resultTwo doCollectTwo();String resultThree doCollectThree();return RepeatStatus.FINISHED;}}).build();}6.1 –第一个查询 该查询的目标是找到一个样式为“ STY_1.1”的文档。 为此我们需要记住样式在文档中的位置。 它是政策的产物 因此我们将其作为Policy.style来处理 。 该查询的另一个目标是仅返回策略的id字段。 它也是政策的产物。 通过调用以下方法返回结果 mongoTemplate.findOnequeryString.class“ foo”; 。 输出为String因此第二个参数为String.class 。 第三个参数是我们的集合名称。 public String doCollect(){Query query new Query();query.addCriteria(Criteria.where(Policy.style).is(STY_1.1)).fields().include(Policy.id);String result mongoTemplate.findOne(query, String.class, foo);return result;}6.2 –第二个查询 第二个查询和第一个查询之间的区别是返回的字段。 在第二个查询中我们返回Value它是Policy和Group的子级。 public String doCollectTwo(){Query query new Query();query.addCriteria(Criteria.where(Policy.style).is(STY_1.1)).fields().include(Policy.Group.Value);String result mongoTemplate.findOne(query, String.class, foo);return result;}6.3 –第三次查询 第三个查询的条件不同。 我们只想返回ID为“ NRD-1”且状态日期为“ 2017-10-18”的文档 。 我们只想返回两个字段title和description它们都是Value的子级。 请在下面的演示中参考XML文档或打印的JSON以进一步澄清查询。 public String doCollectThree(){Query query new Query();query.addCriteria(Criteria.where(Policy.id).is(NRD-1).and(Policy.status.date).is(2017-10-18)).fields().include(Policy.Group.Value.title).include(Policy.Group.Value.description);String result mongoTemplate.findOne(query, String.class, foo);return result;}7 –Spring批处理作业 作业从步骤1开始然后调用步骤2。 Beanpublic Job xmlToJsonToMongo() {return jobBuilderFactory.get(XML_Processor).start(step1()).next(step2()).build();}8 – SpringBootApplication 这是一个带有静态void main和SpringBootApplication的标准类。 package com.michaelcgood;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;SpringBootApplication EnableAutoConfiguration(exclude{DataSourceAutoConfiguration.class}) public class SpringBatchMongodb {public static void main(String[] args) {SpringApplication.run(SpringBatchMongodb.class, args);} }9 –演示 9.1 –步骤1 JSON打印为字符串。 由于输出很长因此我在下面的描述中省略了输出。 Executing step: [step1] PRINTING STRING :::::::::::::::::::::{Policy: {Group: {Value: {prohibitChanges: true,description: {9.2 –步骤2 我剪切了结果以格式化博客文章的输出。 Executing step: [step2] 检查集合是否存在 Status of collection returns :::::::::::::::::::::true 显示所有对象 list of db objects returns:::::::::::::::::::::[{ _id : { $oid : 59e7c0324ad9510acf5773c0} , [..] 只需返回Policy的ID RESULT:::::::::::::::::::::{ _id : { $oid : 59e7c0324ad9510acf5773c0} , Policy : { id : NRD-1}} 要查看打印到控制台的其他结果请从Github分叉/下载代码并运行该应用程序。 10 –结论 我们已经审查了如何将XML转换为JSON如何将JSON存储到MongoDB以及如何在数据库中查询特定结果。 进一步阅读 MongoTemplate JSON.org 源代码在 Github上 翻译自: https://www.javacodegeeks.com/2017/10/converting-xml-json-raw-use-mongodb-spring-batch.htmlmongodb json
http://www.huolong8.cn/news/280867/

相关文章:

  • 网站维修合同石家庄物流网站建设
  • 建设创意网站太原搜索引擎优化
  • 商城网站营销方案网站开发有什么注意的
  • 做网站是干啥的湖北短视频seo营销
  • 简单的个人网站html广告牌logo设计制作
  • 企业网站建设与管理期末考试免费的个人简历模板word下载
  • 石狮网站建设联系电话wordpress播放swf插件
  • 浙江广厦建设职业技术学院网站网站建设 广州
  • 自贡哪家做网站的好网站的基础服务
  • 上海网站推广联盟网站建设的主要功能及定位
  • 南京知名网站建设公司大连优化公司
  • 上饶做网站的公司网站设计制作哪种快
  • 小白如何自己做网站织梦 网站无法显示该页面
  • php网页制作代码搜索引擎优化的实验结果分析
  • 做一网站要什么软件有哪些网站开发什么比较有创意
  • 学习电子商务网站建设与管理的感想查企业信息的黄页有哪些
  • 江西建设监督网站wordpress 5.1如何更换编辑器
  • 大庆建设银行网站首页公众号入口
  • 在哪里找个人做网站的网站 宽屏窄屏自适应
  • 做网站的公司 杭州成都电子商务网站开发
  • 网站常见的域名seo优化是什么意思
  • 广州品牌网站设计价格wordpress报名收费
  • 做网站空间费用是什么意思网络优化的基本方法
  • 网站建设实训报告建议wordpress ajax error
  • 夸克作文网站网站服务器地址怎么查询
  • 自己给公司做网站难不难黄山旅游网页设计作业
  • 制作自助网站萧山网站建设xssem
  • 包装设计网站官网网站添加地图
  • 动易网站后台公司网站备案网站名称有什么用
  • 用插件做网站wordpress更改自定义文章页面