edi 分割<CR> or <CR><LF>

时间: 2023-10-23 11:08:51 浏览: 69
在 EDI 文件中,一行的结束通常使用回车(CR)和换行(LF)两个字符组合来表示,即<CR><LF>。这被称为 CRLF 行结束符。 但是,在某些EDI文件中,也可能使用单独的回车符(CR)作为行结束符,这被称为 CR 行结束符。 因此,在进行 EDI 文件处理时,需要根据实际情况来判断行结束符的类型,以便正确地解析和处理 EDI 文件。
相关问题

# int8 -- 双出错故障。 类型:放弃;有错误码。 # 通常当 CPU 在调用前一个异常的处理程序而又检测到一个新的异常时,这两个异常会被串行地进行 # 处理,但也会碰到很少的情况,CPU 不能进行这样的串行处理操作,此时就会引发该中断。 98 _double_fault: 99 pushl $_do_double_fault # C 函数地址入栈。 100 error_code: 101 xchgl %eax,4(%esp) # error code <-> %eax,eax 原来的值被保存在堆栈上。 102 xchgl %ebx,(%esp) # &function <-> %ebx,ebx 原来的值被保存在堆栈上。 103 pushl %ecx 104 pushl %edx 105 pushl %edi 106 pushl %esi 107 pushl %ebp 108 push %ds 109 push %es 110 push %fs 111 pushl %eax # error code # 出错号入栈。 112 lea 44(%esp),%eax # offset # 程序返回地址处堆栈指针位置值入栈。 113 pushl %eax 114 movl $0x10,%eax # 置内核数据段选择符。 115 mov %ax,%ds 116 mov %ax,%es 117 mov %ax,%fs 118 call *%ebx # 间接调用,调用相应的 C 函数,其参数已入栈。 addl $8,%esp # 丢弃入栈的 2 个用作 C 函数的参数。 120 pop %fs 121 pop %es 122 pop %ds 123 popl %ebp 124 popl %esi 125 popl %edi 126 popl %edx 127 popl %ecx 128 popl %ebx 129 popl %eax 130 iret 131 解释下这段话

这段话描述了一个汇编代码的执行过程,具体内容如下: 98: `_double_fault`: 这是一个标签,用于标识一个代码块或函数的入口点,这里表示双出错故障的处理。 99: `pushl $_do_double_fault`: 将 `_do_double_fault` C 函数的地址压入堆栈,准备调用该函数处理双出错故障。 100: `error_code:`: 这是一个标签,用于标识错误码处理的代码块。 101: `xchgl %eax,4(%esp)`: 交换 `%eax` 寄存器和堆栈上偏移为 4 的位置的值,将 `%eax` 中的值保存在堆栈上。 102: `xchgl %ebx,(%esp)`: 交换 `%ebx` 寄存器和堆栈顶部位置的值,将 `%ebx` 中的值保存在堆栈上。 103-107: 将 `%ecx`、`%edx`、`%edi`、`%esi`、`%ebp` 寄存器的值依次压入堆栈。 108-109: 将 `%ds` 和 `%es` 寄存器的值压入堆栈。 110: `pushl %eax`: 将 `%eax` 寄存器中的值压入堆栈,即错误码入栈。 111: `lea 44(%esp),%eax`: 计算堆栈指针位置偏移为 44 的地址并存储到 `%eax` 寄存器中。 113: `pushl %eax`: 将 `%eax` 寄存器中的值压入堆栈,即程序返回地址处堆栈指针位置值入栈。 114-117: 将立即数 `0x10`(内核数据段选择符)移动到 `%ds`、`%es` 和 `%fs` 寄存器中。 118: `call *%ebx`: 通过 `%ebx` 中保存的地址,间接调用相应的 C 函数进行处理,该函数的参数已经入栈。 119: `addl $8,%esp`: 丢弃入栈的两个用作 C 函数的参数,通过增加堆栈指针来实现。 120-122: 弹出 `%fs`、`%es` 和 `%ds` 寄存器中保存的值。 123-125: 依次弹出 `%ebp`、`%esi` 和 `%edi` 寄存器中保存的值。 126-127: 依次弹出 `%edx` 和 `%ecx` 寄存器中保存的值。 128-129: 依次弹出 `%ebx` 和 `%eax` 寄存器中保存的值。 130: `iret`: 执行中断返回指令,恢复现场并返回到之前的执行点。 总之,这段代码是用于处理双出错故障的一系列操作。它将相关寄存器的值保存到堆栈上,设置内核数据段选择符,并调用相应的 C 函数进行处理。最后,通过中断返回指令 `iret` 恢复现场并返回到之前的执行点。具体的功能和目的需要根据上下文来确定。

Java处理EDI解析的测试类

以下是一个简单的Java测试类,用于解析EDI文件: ```java import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.milyn.edi.unedifact.d96a.D96AInterchangeFactory; import org.milyn.edi.unedifact.d96a.INVOic; import org.milyn.edi.unedifact.d96a.INVOic.INVOicSegmentGroup; import org.milyn.edi.unedifact.d96a.INVOic.INVOicSegmentGroup.INVOicSegmentGroup1; import org.milyn.edi.unedifact.d96a.INVOic.INVOicSegmentGroup.INVOicSegmentGroup1.INVOicSegmentGroup11; import org.milyn.edi.unedifact.d96a.INVOic.INVOicSegmentGroup.INVOicSegmentGroup1.INVOicSegmentGroup12; import org.milyn.edi.unedifact.d96a.INVOic.INVOicSegmentGroup.INVOicSegmentGroup1.INVOicSegmentGroup13; import org.milyn.edi.unedifact.d96a.INVOic.INVOicSegmentGroup.INVOicSegmentGroup1.INVOicSegmentGroup14; import org.milyn.edi.unedifact.d96a.INVOic.INVOicSegmentGroup.INVOicSegmentGroup1.INVOicSegmentGroup15; import org.milyn.edi.unedifact.d96a.INVOic.INVOicSegmentGroup.INVOicSegmentGroup1.INVOicSegmentGroup16; import org.milyn.edi.unedifact.d96a.INVOic.INVOicSegmentGroup.INVOicSegmentGroup1.INVOicSegmentGroup17; import org.milyn.edi.unedifact.d96a.INVOic.INVOicSegmentGroup.INVOicSegmentGroup1.INVOicSegmentGroup18; import org.milyn.edi.unedifact.d96a.INVOic.INVOicSegmentGroup.INVOicSegmentGroup1.INVOicSegmentGroup19; import org.milyn.edi.unedifact.d96a.INVOic.INVOicSegmentGroup.INVOicSegmentGroup1.INVOicSegmentGroup1a; import org.milyn.edi.unedifact.d96a.INVOic.INVOicSegmentGroup.INVOicSegmentGroup1.INVOicSegmentGroup1a.INVOicSegmentGroup1a1; import org.milyn.edi.unedifact.d96a.INVOic.INVOicSegmentGroup.INVOicSegmentGroup1.INVOicSegmentGroup1a.INVOicSegmentGroup1a2; import org.milyn.edi.unedifact.d96a.INVOic.INVOicSegmentGroup.INVOicSegmentGroup1.INVOicSegmentGroup1a.INVOicSegmentGroup1a3; import org.milyn.edi.unedifact.d96a.INVOic.INVOicSegmentGroup.INVOicSegmentGroup1.INVOicSegmentGroup1a.INVOicSegmentGroup1a4; import org.milyn.smooks.edi.unedifact.model.r41.SegmentGroup; import org.milyn.smooks.edi.unedifact.model.r41.SegmentGroup10; public class EdiParserTest { public static void main(String[] args) throws IOException { String ediFile = "example.edi"; // EDI文件路径 BufferedReader reader = new BufferedReader(new FileReader(ediFile)); String ediContent = ""; String line; while ((line = reader.readLine()) != null) { ediContent += line; } reader.close(); D96AInterchangeFactory factory = D96AInterchangeFactory.getInstance(); INVOic invoice = factory.fromUNEdifact(ediContent, INVOic.class); // 获取INVOIC头部信息 INVOicSegmentGroup1 invoiceHeader = invoice.getINVOicSegmentGroup1(); System.out.println("Header Information:"); System.out.println("Invoice Number: " + invoiceHeader.getE1004()); System.out.println("Invoice Date: " + invoiceHeader.getE1373()); System.out.println("Invoice Currency Code: " + invoiceHeader.getE6345()); // 获取INVOIC行项目信息 List<INVOicSegmentGroup> invoiceItems = invoice.getINVOicSegmentGroup(); System.out.println("Line Item Information:"); for (INVOicSegmentGroup item : invoiceItems) { INVOicSegmentGroup1a itemHeader = item.getINVOicSegmentGroup1().getINVOicSegmentGroup1a(); INVOicSegmentGroup11 itemDetail = item.getINVOicSegmentGroup11(); System.out.println("Item Number: " + itemHeader.getE7140()); System.out.println("Product Code: " + itemDetail.getE7143()); System.out.println("Product Description: " + itemDetail.getE7008()); System.out.println("Invoice Quantity: " + itemDetail.getE6063()); System.out.println("Invoice Unit Price: " + itemDetail.getE6411()); System.out.println("Invoice Line Total: " + itemDetail.getE5463()); } } } ``` 这个测试类使用了Milyn EDI库来解析EDI文件。你需要在项目中添加以下Maven依赖: ```xml <dependency> <groupId>org.milyn</groupId> <artifactId>milyn-edisax-unedifact</artifactId> <version>1.7.1</version> </dependency> <dependency> <groupId>org.milyn</groupId> <artifactId>milyn-smooks-core</artifactId> <version>1.7.1</version> </dependency> ``` 请注意,这个测试类仅适用于特定类型的EDI文件。如果你的EDI文件结构不同,你需要根据你自己的情况编写代码。

相关推荐

最新推荐

recommend-type

HTML5 通过Vedio标签实现视频循环播放的示例代码

&lt;source src="video/1.webm"&gt;&lt;/source&gt; &lt;/video&gt; ``` 这里的`autoplay`属性使得视频在页面加载完成后自动播放,`controls`属性则添加了视频播放控件,而`source`标签则指定了视频文件的路径,这里是`1.webm`格式的...
recommend-type

基于redis实现定时任务的方法详解

5. **服务重启处理**:确保服务重启后仍能重新初始化监听,订阅实例需在启动时订阅`__keyevent@&lt;db&gt;__:expired`频道。 **核心代码解析** 1. 引入Redis客户端实例(`saveClient`用于存储,`subClient`用于订阅)以及...
recommend-type

Redis操作命令总结

13. **bitop operation destkey key1 [key2..]**: 对一个或多个键进行位操作,如 AND、OR、NOT、XOR,并将结果保存到 `destkey`。 14. **strlen key**: 获取键的字符串值的长度。 15. **setex key seconds value**...
recommend-type

redis中修改配置文件中的端口号 密码方法

Redis 是一个高性能的键值数据库,它在许多应用程序中被广泛使用,特别是在缓存和实时数据存储场景。... **Windows 环境:** 1. **定位 Redis 配置文件**:首先,你需要找到 Redis 安装目录下的 `redis.windows.conf` ...
recommend-type

redis 用scan指令 代替keys指令(详解)

Redis中的`SCAN`命令是为了解决`KEYS`命令在大数据量下可能导致服务器阻塞的问题而设计的。`KEYS`命令一次性返回所有匹配的键,如果数据库中键的数量非常大,这将消耗大量的计算资源,从而影响Redis服务器的性能。...
recommend-type

贵州煤矿矿井水分类与处理策略:悬浮物、酸性与非酸性

贵州煤矿区的矿井水水质具有鲜明的特点,主要分为含悬浮物矿井水、酸性含铁锰矿井水和非酸性含铁锰矿井水三类。这些分类基于矿井水的水质特性,如悬浮物含量、酸碱度和铁锰离子浓度等。 含悬浮物矿井水是贵州普遍存在的,主要来源于煤粉和岩粉在开采过程中产生的沉淀。经过井下水仓的自然沉淀,大部分悬浮物会被去除,地面抽上来的水悬浮物浓度较低,但依然可能存在50微米以下的细小颗粒。处理这类水通常采用混凝沉淀加过滤工艺,可以有效去除悬浮物,保证水质。 酸性含铁锰矿井水则表现出较高的铁锰含量,这对水质处理提出了特殊要求。针对这种情况,建议采用中和处理结合混凝沉淀和过滤的方式,使用高锰酸钾溶液(浓度5%)浸泡过的锰砂作为滤料,这样可以减少矿井水处理站的启动时间,并且有助于进一步净化水质。 非酸性含铁锰矿井水的处理相对较简单,通常采用混凝沉淀和锰砂过滤的组合工艺,能够有效地去除铁锰离子,保持水质稳定。 总结来说,矿井水的水质特点决定了其处理工艺的选择,对于贵州地区而言,针对性地选择合适的处理方案至关重要,既能确保矿井水达到排放标准,又能有效降低对环境的负面影响。这方面的研究和实践对于提升矿井水资源利用效率,实现绿色开采具有重要的现实意义。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

人工智能透明度革命:如何构建可解释的AI系统

![人工智能透明度革命:如何构建可解释的AI系统](https://static001.infoq.cn/resource/image/38/aa/385fe270e64cdf179260bc9719f022aa.png) # 1. 人工智能透明度的重要性 随着人工智能(AI)技术在多个领域的广泛应用,AI系统的决策过程和结果的透明度变得至关重要。透明度不仅有助于建立用户信任,还是解决潜在偏见、提升公平性和可解释性的基石。在本章中,我们将探讨透明度对于AI系统的重要性,并分析为什么它对于建立社会对AI技术的信任至关重要。 ## 1.1 AI透明度的社会影响 AI透明度指的是能够让用户了解
recommend-type

mig ip核打不开

MIG (Model Interchange for Graphics) 是一种用于图形处理器(GPU)硬件设计的模型交换格式,主要用于描述GPU架构。如果遇到"mig ip核打不开"的问题,可能是以下几个原因: 1. **权限不足**:检查文件路径是否有足够的权限访问该MIG IP核文件。 2. **软件兼容性**:确认使用的工具是否支持当前的MIG版本,旧版工具可能无法打开新版本的IP核。 3. **环境配置**:确保所有依赖的库和开发环境变量已正确设置,尤其是与MIG相关的SDK和编译器。 4. **错误的文件**:确认MIG IP核文件本身没有损坏或者不是针对您的开发平台设计的。
recommend-type

醛固酮增多症肾上腺静脉采样对比:ACTH后LR-CAV的最优评估

本文研究关注于原发性醛固酮增多症(PA)患者的肾上腺静脉采样技术,这是一种在临床诊断中用于评估高血压和肾上腺功能异常的重要手段。研究的目的是确定在进行侧斜度评估前,哪种方法能够提供最精确的诊断信息,以便早期识别单侧PA。 研究采用了回顾性设计,纳入了64例连续的PA患者。研究团队通过将导管置入总干静脉(CTV),并在促肾上腺皮质激素(ACTH)刺激前后的不同时间点进行血液采样。主要评估的指标包括横向比例(LR,即高值侧醛固酮/皮质醇比率与低值侧的比率)、对侧比率(CR,低值侧的ACR与下腔静脉比率的ACR),以及血浆醛固酮浓度(PAC)。 结果显示,ACTH刺激后,LR-CAV(来自中肾上腺静脉的比率)对于单侧肾上腺病变的检测率最高,达到93.3%(14/15),具有良好的灵敏度(0.93)和特异性(0.84),当切点设为2.5时。CR-POST-ACTH的Area Under the Curve(Az值)也表现出较高的性能,检出率为86.7%(13/14),其灵敏度达到0.98,特异性在0.88(当截止值为0.8时)。 这些发现表明,CR在ACTH刺激后和LR-CAV在ACTH刺激后的评估方法对PA的侧向评估具有高度准确性,可以作为临床决策的重要依据。对于原发性醛固酮增多症的患者,选择合适的肾上腺静脉采样技术不仅可以帮助医生更准确地定位病灶,还能提高治疗的针对性和患者预后。 该研究发表在《开放放射学杂志》上,强调了在诊断PA时,尤其是在决定是否需要进行进一步的手术干预前,合理运用这些评估方法的重要性。它为临床实践提供了实用的指导,特别是在处理可能涉及肾上腺功能异常的复杂病例时。