C# 输出流转化成输入流操作XML
C# Code
class Program
{
static void Main(string[] args)
{
DataSet ds = new DataSet();
ds.ReadXmlSchema(@"D:\szschema.xsd");
DataTable dt = ds.Tables["ITEMADD"];
StructHead(ds.Tables["HEADER"]);
StructDatas(ds.Tables["DATAS"]);
int m = 0;
StructData( ds.Tables["DATA"], m);
StructITEMADD(ds.Tables["ITEMADD"], m);
string filepath = "D:\\_123.xml";
//暂存流用于操作xml使用
MemoryStream ms = new MemoryStream();
XmlTextWriter XmlWt = new XmlTextWriter(ms, Encoding.UTF8);
//保存xml文件的写入流
TextWriter t = new StreamWriter(filepath, false, Encoding.UTF8);
try
{
ds.WriteXml(XmlWt);
XmlWt.Flush();
//将流转换成byte数组
int mscount = (int)ms.Length;
byte[] temp = new byte[mscount];
ms.Seek(0, SeekOrigin.Begin);
ms.Read(temp, 0, mscount);
//将utf8编码的byte返回成文本
string xml = new UTF8Encoding().GetString(temp).Trim();
//操作xml
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
//查找data节点
XmlNode data = doc.SelectNodes("FREIGHTCPIC/DATAS/DATA").Item(0);
if (data != null)
{
XmlNodeList itemaddlist = data.SelectNodes("ITEMADD");
XmlNode itemadd2 = itemaddlist.Item(1);
XmlNodeList itemaddsub = itemadd2.ChildNodes;
int ncount = itemaddsub.Count;
for (int i = 0; i < ncount; i++)
{
itemaddlist.Item(0).AppendChild(itemaddsub.Item(0));
}
data.RemoveChild(itemadd2);
//保存修改后的xml
doc.Save(t);
}
}
catch
{
//如果发生错误,保存未修改前的xml
ds.WriteXml(t);
}
finally
{
XmlWt.Close();
ms.Close();
ds.Dispose();
t.Close();
}
}
private static void StructHead(DataTable dt)
{
DataRow row = dt.NewRow();
row["TYPE"] = "IN";
row["WORKTYPE"] = "0";
row["CLASSESTYPE"] = "1";
row["LOGINUSERNAME"] = "1";
row["LOGINPASSWORD"] = "1";
dt.Rows.Add(row);
}
private static void StructDatas(DataTable dt)
{
DataRow row = dt.NewRow();
row["DATAS_Id"] = "0";
dt.Rows.Add(row);
}
private static void StructITEMADD(DataTable dt, int i)
{
DataRow row = dt.NewRow();
row["ITEMADDCODE"] = "Z000054C";
row["ITEMADDCONTENT"] = "被保险人/投保人保证本保单投保内容完全符合与保险人签署之有效《货物运输预约保险单》所载明的条件";
row["DATA_Id"] = i;
dt.Rows.Add(row);
row = dt.NewRow();
row["ITEMADDCODE"] = "Z000055C";
row["ITEMADDCONTENT"] = "本单为货物起运后投保,保险责任自{" + DateTime.Now.ToString("yyyy-MM-dd") + "}起";
row["DATA_Id"] = i;
dt.Rows.Add(row);
}
private static void StructData( DataTable dt, int i)
{
DataRow row = dt.NewRow();
row["AUDITTYPE"] = "A";
row["UNITCODE"] = "50232";
row["APPLYNO"] = "22222222222222222222";//协议申请号
row["APPLYENDORSENO"] = "222222222222222222222222222222222";//协议批改号
row["APPLYCODE"] = "9000122236800";
row["APPLYNAME"] = "深圳市XXXXX有限公司";
row["INSURANTNAME"] = "";
row["CLASSTYPE"] = "";
row["MARK"] = "";
row["QUANTITY"] = "";
row["ITEM"] = "";
row["PACKCODE"] = "01";
row["ITEMCODE"] = "";
row["FLIGHTAREACODE"] = "";
row["KIND"] = "";
row["KINDNAME"] = "";
row["VOYNO"] = "";
row["STARTPORT"] = "深圳";
row["TRANSPORT1"] = "";
row["ENDPORT"] = "";
row["CLAIMAGENT"] = "";
row["MAINITEMCODE"] = "ZH";
row["ITEMCONTENT"] = "国内水路、陆路货物运输保险条款综合险";
row["CREDITNO"] = "";
row["PRINTNUM"] = "1";
row["CURRENCYCODE"] = "01";
row["PRICECOND"] = "1";
row["INVAMOUNT"] = "0";
row["INCRATE"] = "";
row["AMOUNT"] ="";
row["RATE"] = "";
row["PREMIUM"] = "";
row["POLICYNUM"] = "1";
row["CLAIMCURRENCYCODE"] = "01";
row["CLAIMPAYPLACE"] = "0";
row["FCURRENCYCODE"] = "01";
row["EFFECTDATE"] = "";
row["SAILDATE"] = "";
row["FRANCHISE"] = "1";
row["SPECIALIZE"] ="";
row["SPECIALIZE"] = "";
row["USERNO"] = "";
row["DATA_Id"] = i;
row["DATAS_Id"] = "0";
dt.Rows.Add(row);
}
}
分享到:
相关推荐
在.NET开发环境中,C#语言提供了丰富的库和API来处理各种数据格式的读写操作,如Excel、TXT、XML和HTTP数据流。这些功能对于数据交换、存储和处理至关重要。以下将详细介绍这些知识点: 1. **Excel读写**: - 使用...
同样,使用`XmlSerializer`类的`Deserialize`方法,传入XML字符串或XML文档的输入流,即可创建相应的对象实例。 - **根元素匹配**:XML文档的根元素必须与要反序列化的类相匹配。如果类名为`Person`,则XML文档的根...
11.XML操作类 XmlHelper 操作Xml文档的帮助类,主要是添加,删除,修改,查询节点的操作和操作后进行保存的功能。 XMLProcess 操作Xml文档的帮助类,主要是添加,删除,修改,查询节点的操作的功能。 12.弹出消息...
11.XML操作类 XmlHelper 操作Xml文档的帮助类,主要是添加,删除,修改,查询节点的操作和操作后进行保存的功能。 XMLProcess 操作Xml文档的帮助类,主要是添加,删除,修改,查询节点的操作的功能。 12.弹出消息...
这些定义通常使用XML或者特定的工作流建模语言来描述。 2. **工作流实例**:每个工作流程执行的实例都称为一个工作流实例,它们由工作流引擎创建并管理,包括实例的启动、暂停、恢复和结束。 3. **活动与状态**:...
- **保存和响应**:在填充完数据后,你需要将内存流转换为HTTP响应,让客户端可以下载。`Response.BinaryWrite(package.GetAsByteArray());`会将Excel文件内容写入响应流。 3. **C#代码示例** 以下是一个简单的...
开发者可能定义一种消息协议,比如包含消息类型、发送者、接收者和内容等字段,然后编写解析代码将字节流转换成消息对象。 6. **安全性和隐私保护**:尽管是简易版,但QQ聊天工具也应该考虑用户隐私和数据安全。...
在.NET框架中,流(Stream)是处理输入/输出(I/O)操作的基础抽象,它允许程序与各种类型的数据源(如文件、网络连接或内存缓冲区)进行交互。Be.Stateless.Stream库扩展了.NET Framework内置的流概念,提供了额外的...
在工作流应用中,这些步骤可以抽象为工作流任务,并按照一定的顺序和条件进行流转。在这个"WFTest"项目中,我们可以预期看到以下几个关键部分: 1. **工作流模型定义**:这是工作流的核心,定义了各个任务及其顺序...
1. **词法分析**:ANTLR可以生成词法分析器(通常称为Scanner或Lexer),它负责将输入的字符流转换为标记流。词法分析器根据预定义的正则表达式规则识别并生成词法符号。 2. **语法分析**:ANTLR生成的解析器(通常...
词法分析器负责将输入的字符流分解成一系列的标记(tokens),而解析器则根据这些标记构建出抽象语法树(AST)。在构建Java解释器时,首先需要定义Java的语法规则,这通常通过ANTLR的语法文件(.g4文件)来完成。这...
- **词法分析器(Lexer)**:将输入的字符流转化为标记流。ANTLR会根据定义的词法规则识别出一个个的词汇单元(token)。 - **语法分析器(Parser)**:接收词法分析器产生的标记流,根据语法规则进行解析,生成...
6. **处理二进制流**:类可能包含将内存流转换为二进制数据,然后通过Response.BinaryWrite发送到客户端的方法。 7. **错误处理**:类可能包含异常处理代码,确保在导出过程中遇到问题时,能够向用户提供友好的错误...
1. **接口规范**:详细描述了工作流WebService的接口定义,包括每个操作的名称、输入参数、输出参数以及对应的WSDL定义。 2. **使用示例**:提供了一些调用接口的实际代码片段,可能是Java、C#或其他编程语言,帮助...
9. **工作流测试**:对于采用工作流驱动的软件,测试多节点流转的逻辑,确保流程逆转时能正确回退。注意默认分支的处理,防止因操作失误导致错误节点的选择。 10. **输入框测试**:测试输入框的边界情况,如粘贴...
在IT行业中,"parser"通常指的是解析器,它是处理数据或指令序列的软件,用于将输入转换成可操作的结构或有意义的信息。在Java编程语言中,解析器扮演着至关重要的角色,尤其在处理XML、JSON、语法分析、编译器设计...
2. **工作流**:定义审批流程,自动化处理任务流转。 3. **会议管理**:安排、通知、记录会议信息。 4. **公告通知**:发布内部公告,及时传递信息。 5. **人事管理**:员工信息、考勤、绩效评估等。 6. **财务管理*...