from(direct:start)
.split().tokenizeXML("SomeElement", 25)
...
SaxParseException: Cannot find the declaration of element 'SomeElement'
.split(body().tokenizeXML("SomeElement", "*"))
是的,这是有效的,但是split
将表达式作为参数,而使用表达式body().tokenizexml(“someelement”,“*”)
则没有机会使用分组特性。所以我的问题是,1。为什么split()
找不到元素?2.是否有机会在split(Expression)
中使用组特性?
由于我们绑定到Java6,所以我们使用camel Version2.13.4。
XML文件如下所示(简化后,假设MyRootElement中有数百个SomeElement元素)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<MyRootElement xmlns="urn:THIS:IS:A-NAMESPACE">
<SomeElement id="12345">
<address addressType="mainAddress" street="Test street" zipCode="12345" city="Testcity"/>
</SomeElement>
<SomeElement id="23456">
<address addressType="mainAddress" street="Test street" zipCode="12345" city="Testcity"/>
</SomeElement>
</MyRootElement>
<MyRootElement xmlns="urn:THIS:IS:A-NAMESPACE" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:THIS:IS:A-NAMESPACE">
<SomeElement id="12345">
<address addressType="mainAddress" street="Test street" zipCode="12345" city="Testcity"/>
</SomeElement>
</MyRootElement>
split().tokenizexml(“someelement”,2)
不考虑根元素和命名空间,因此得到如下内容:
<SomeElement id="12345">
<address addressType="mainAddress" street="Test street" zipCode="12345" city="Testcity"/>
</SomeElement>
<SomeElement id="23456">
<address addressType="mainAddress" street="Test street" zipCode="12345" city="Testcity"/>
</SomeElement>
当然,如果我根据模式验证拆分的消息,它就会失败。因为我需要将someelements
嵌入根元素myrootelement
中,如下所示:
<MyRootElement xmlns="urn:THIS:IS:A-NAMESPACE" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:THIS:IS:A-NAMESPACE">
<SomeElement id="12345">
<address addressType="mainAddress" street="Test street" zipCode="12345" city="Testcity"/>
</SomeElement>
<SomeElement id="23456">
<address addressType="mainAddress" street="Test street" zipCode="12345" city="Testcity"/>
</SomeElement>
</MyRootElement>
我通过了这个分组和xml拆分测试:
public class TestSplitOnXml extends CamelTestSupport {
@Override
protected RouteBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
from("direct:in")
.split().tokenizeXML("SomeElement", 2)
.to("mock:out")
.end();
}
};
}
@Test
public void testSplitting() throws InterruptedException {
MockEndpoint mockEndpoint = getMockEndpoint("mock:out");
mockEndpoint.setExpectedMessageCount(2);
Exchange exchange = createExchangeWithBody(this.getClass().getClassLoader().getResourceAsStream("text.xml"));
template.send("direct:in", exchange);
assertMockEndpointsSatisfied();
}
}
将其作为test.xml:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<MyRootElement xmlns="urn:THIS:IS:A-NAMESPACE" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:THIS:IS:A-NAMESPACE">
<SomeElement id="12345">
<address addressType="mainAddress" street="Test street" zipCode="12345" city="Testcity"/>
</SomeElement>
<SomeElement id="23456">
<address addressType="mainAddress" street="Test street" zipCode="12345" city="Testcity"/>
</SomeElement>
<SomeElement id="23456">
<address addressType="mainAddress" street="Test street" zipCode="12345" city="Testcity"/>
</SomeElement>
<SomeElement id="23456">
<address addressType="mainAddress" street="Test street" zipCode="12345" city="Testcity"/>
</SomeElement>
</MyRootElement>
从中可以看出,拆分、tokeniseXML和分组确实有效。可能是xml缺少xmlns:xsi=“http://www.w3.org/2001/xmlschema-instance”xsi:schemalocation=“urn:this:is:a-namespace”
问题内容: 背景 我正在使用Spring MVC创建RESTful服务。当前,我具有以下控制器结构: 如您所见,这三种方法都为标头接收相同的参数,并以相同的方式将其应用于每种方法:。我将创建类似的控制器,并且对于POST,PUT和PATCH操作将包含几乎相同的代码,但适用于其他实体。当前,大多数实体旨在通过超类来支持该领域: 另外,我使用拦截器来验证是否已为请求设置标头。 题 如何避免通过控制器类
问题内容: 我正在尝试使用Webflux将生成的文件流式传输到另一个位置,但是,如果文件的生成遇到错误,则api返回成功,但是DTO在生成文件而不是文件本身时会详细说明错误。这使用的是非常古老且设计不佳的api,因此请原谅post和api设计的使用。 api调用(exchange())的响应是ClientResponse。从这里,我可以使用bodyToMono转换为ByteArrayResourc
问题内容: 背景 我正在使用Spring MVC创建一系列RESTful服务。当前,我具有以下控制器结构: 可以看出,这三种方法对于标头是相同的参数,并且在每种方法中都采用相同的方式:。我将创建类似的控制器,对于POST,PUT和PATCH操作,它们将包含类似的代码,但面向其他实体。当前,大多数实体旨在通过父类支持此字段: 注意,我使用拦截器来验证是否已根据请求设置标头。 题 如何避免在控制器和方
问题内容: 我正在开发我的第一个Android应用程序。我正在尝试做的是对REST服务的POST请求,我希望此请求的主体为JSON字符串。 我正在使用Google的GSON来生成发送到服务器的JSON。这是执行POST请求的代码: 响应代码为400 BAD REQUEST,我可以从服务器日志中读取信息。尸体未正确发送的地方: 服务器端的代码是一个简单的Seam Rest Service: Andr
问题内容: 鉴于此html: 我要填充其容器块的所有剩余垂直空间,我从这里开始: 100%的高度也是如此,这意味着它正在采用其父容器块的高度,即问题是似乎没有起作用,未被裁剪。 另一方面,如果我换行并使用另一个具有与上述相同属性的div,则将得到所需的结果: 与此HTML当然: 我的问题是为什么并且似乎具有相同属性的不同行为?没有包装,有没有办法获得相同的效果? 具有相同属性的两个jsFiddle
问题内容: 我看不出两者之间的区别: 和 有什么解释吗? 问题答案: 两者之间没有真正的区别(如果您只是在谈论在哪里申请,那么BoltClock对另一个问题的答案更合适)。是一个元素,就像是。 两者都是有效的选择,并且都可以在所有通用浏览器中使用。 例如,YUI重置选择在元素上设置一个,而不是: 这要求您将on 设置为on ,例如,请参见:无法使用CSSreset更改主体背景颜色 根元素的背景成为
问题内容: 我知道这个问题被问过很多次,但是我没有找到答案。那么,为什么建议在body标签的末尾添加脚本以更好地渲染呢? 从Udacity课程和CSSOM准备就绪后开始渲染。JS是HTML解析阻止程序,并且CSSOM准备好后,任何脚本都会启动。 因此,如果我们得到: CRP为: 如果脚本在头: CRP将相同: 这个问题仅与“同步”脚本有关(没有async / defer属性)。 问题答案: 从历史
本文向大家介绍style标签写在body前和body后的区别是什么?相关面试题,主要包含被问及style标签写在body前和body后的区别是什么?时的应答技巧和注意事项,需要的朋友参考一下 渲染机制的区别,在body前是已经把样式浏览一遍,到了对应标签直接,渲染样式。显示块。 在body后,是浏览器已经把标签浏览了,但基于没有样式,显示的不完全,再把body后的样式表,扫描后,在成为真正的样式。