Tag: xml

在多个XML文件中拆分XML

我有以下xml文件作为输入…. SAFER 04.02 01.00 REPLACE 2009-09-01T00:00:00 CT 274845 US AR 55002 I 100 2007-11-06 2009-08-03 LG AP SUPPLY CO PH 1400 N OATS TEXARKANA AR 71854 MILLER US MA PO BOX 1927 TEXARKANA AR 75504 US ….. ….. ….. 我想把这个xml文件通过像这样的java代码分成多个文件… File1.xml ….. ….. File2.xml ….. ….. File3.xml ….. ….. 以及更多xml文件。每个xml文件包含最多10或15个IRP_ACCOUNT。 有人能帮帮我吗 ?

嵌套元素列表的JAXB注释

我有以下XML: asdas d123asdsad 0 23123s qwerty 我有以下java类来映射它: @XmlRootElement(name = “mappings”) public class Mappings { @XmlElement(name = “mapping”) private List mMappings; public List getMappings() { return mMappings; } public void setMappings(List aMappings) { this.mMappings = aMappings; } } public class Mapping { @XmlElement(name = “parameter”) private List mParameters; public List getParameters() { return mParameters; } public […]

Java XML解析:避免实体引用解析

我目前正在使用DOM解析器解析XHTML文档,例如: final DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); dbf.setValidating(false); final DocumentBuilder db = dbf.newDocumentBuilder(); db.setEntityResolver(MY_ENTITY_RESOLVER); db.setErrorHandler(MY_ERROR_HANDLER); … final Document doc = db.parse(inputSource); 我的问题是当我的文档包含实体引用时,例如: € 我的解析器为该内容创建一个Text节点,其中包含“€”而不是“€”。 也就是说,它正在以它应该的方式解析实体(XHTML 1.0 Strict DTD链接到ENTITIES Latin1 DTD,后者又建立了“€”与“€”的等价性)。 问题是,我不希望解析器做这样的事情。 我想保留“€” 文本未经修改 。 我已经尝试过了: final DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); dbf.setExpandEntityReferences(false); 但: 我不喜欢这个,因为我担心这可能会使一些解析器实现无法从XHTML 1.0 Strict DTD 导航到ENTITIES Latin1 DTD,因此不考虑“€” 作为声明的实体。 当我这样做时,它奇怪地创建了两个节点:一个“磅”实体节点,以及一个带有“€”符号的Text节点。 有任何想法吗? 是否有可能在DOM Parser中配置它而不需要预处理 XHTML并用所有“&”符号代替其他东西?… 解决方案可以是DOM解析器,也可以是SAX解析器,我不介意使用SAX解析,然后使用转换创建我的DOM […]

Java如何提取完整的XML块

使用此XML示例: 0 1 我想要一个简单的方法来提取节点B的XML块,返回XML String: 1 要检索此节点,我应该使用一些Java XPath库,如XOM或Java XPath,但我找不到如何获取完整的XML字符串。 我使用C#找到了两个等效的回答问题: C#如何提取完整的xml节点集 , 如何从XML文档中提取XML块?

JAXB映射到JSON

我编写了一个JAX-RS(Jersey)REST服务,它接受ONIX XML格式的XML消息。 通常,我已经使用xjc从给定模式生成了JAXB绑定的所有必需类。 整体上有500多个课程,我无法修改它们。 现在,当我有一个JAXB映射对象时,我需要将它存储到数据库中。 我使用mongoDb,因此消息格式应该是JSON。 我尝试使用Jackson和JAXB模块将JAXB对象转换为JSON,这对于存储数据非常有用。 但是当我尝试将JSON转换回JAXB对象时,它会以某种方式抛出与JAXBElement连接的exception。 在谷歌我发现jackson不支持JAXBElement,我必须解决这个问题。 但我不能这样做,因为我无法修改JAXB生成的类。 有没有办法用其他方法将JAXB对象映射到JSON,但是它将遵循整个JAXB规范,以便将来从JSON转换为JAXB对象和签证没有问题?

如何解析xml到java对象?

我有一个XML用于配置一些规则,它没有复杂的结构,但是这个配置在我的系统中的任何地方使用,所以我想将这个XML解析为java对象并设计为单例模式,这是我的好方法可以使用它直接解析XML到Java对象而无需编写太多代码? 我做了一些关于谷歌的研究,知道JAXB是一个选择,我的应用程序只是一些工具程序,它读取规则,然后按照做的东西,JAXB可以更广泛地用于Web服务,它适合我的项目? 如果是的话,最重要的问题是,我用xjc根据xsd文件生成java对象的源类,在unmarshal之后我会直接得到这些configurationType对象,是否有必要再次转换,(从JaxB类到我拥有的java pojo对象)配置),我看到大多数编码器做到了这一点,但为什么呢? 因为它们是一些数据,只是从生成的对象到JAXB并复制到自己创建的POJO对象

JAXB,XJC – >创建多个类文件

我是第一次使用JAXB和XJC。 我想从XML文件生成Java类,所以我使用这个在线帮助器从XML文件生成模式。 之后我只使用此命令行生成Java类: xjc myschema.xsd 它的工作,但我只收到一个Java文件和许多静态类。 这可能会生成许多每个文件只包含一个classe的java文件吗? 谢谢

JAXB元素既可选又可以为nillable

我重新格式化了这个问题,希望能让我的意图更加清晰。 建筑 我正在编写一些我将使用JAX-WS自己发布的Web服务。 我们已经使用了一段时间的过程是首先编写一个仅定义请求和响应对象的模式。 这将被发送给客户以批准xml消息的结构。 我不想自己编写整个wsdl,因为它比基本模式更复杂。 接下来,我使用JAXB命令xjc根据模式中的请求和响应类型生成类。 然后,我将此类用作参数,并在JAX-WS带注释的端点类上返回类型。 现在这给了我一个我可以打电话的网络服务。 它使我能够更好地控制发送和返回的xml,但也可以自动完成写入完整wsdl所需的重复。 问题 在模式中,我有一个这样的元素: 所以我想区分用户设置null或空白。 然后生成的类具有此属性。 @XmlElementRef(name = “myElement”, namespace = “/mynamespace”, type = JAXBElement.class) protected JAXBElement myElement; 这样做的结果是元素既不​​是可填充的也不是可选的。 JAX-WS作为wsdl的一部分写入的模式已将元素设置为必需而不是nillable,如果我关闭模式validation,我仍然无法将nil传递给我的对象。 事情尝试了 如果我将其更改为必需和​​可空,那么我将获得此生成的代码。 @XmlElement(required = true, nillable = true) protected String myElement; 如果我将其更改为可选而不是nillable,那么我将获得此生成的代码。 protected String myElement 因此,如果您使用JAXB,您可以使用或不是两者。 完全令人失望! 我也尝试手动将生成的类更改为这样。 @XmlElementRef(name = “myElement”, namespace = “/mynamespace”, type = JAXBElement.class, […]

Java:将格式化的xml文件转换为一个行字符串

我有一个格式化的XML文件,我想将它转换为一个行字符串,我该怎么做。 示例xml: Basic XML 100 5 Basic Java 200 15 预期产出 Basic XML1005Basic Java20015 提前致谢。

如何让SAX解析器从xml声明中确定编码?

我正在尝试解析来自不同来源的xml文件(我无法控制)。 其中大多数都是用UTF-8编码的,并且使用以下代码段不会导致任何问题: SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser parser = factory.newSAXParser(); FeedHandler handler = new FeedHandler(); InputSource is = new InputSource(getInputStream()); parser.parse(is, handler); 由于SAX默认为UTF-8,这很好。 但是有些文件声明: 即使声明ISO-8859-1 SAX仍然默认为UTF-8。 只有我添加: is.setEncoding(“ISO-8859-1”); SAX会使用正确的编码吗? 如何在没有专门设置的情况下让SAX自动检测xml声明中的正确编码? 我需要这个,因为我事先不知道文件的编码是什么。 艾琳,提前谢谢