C# IsoMessage 8583 XML c
执行时,我在这个位置得到错误。 XDocument doc=XDocument.ParseBuildIsoMessage.Properties.Resources.Deneme//我通过这种方式从参考资料中获取文档C# IsoMessage 8583 XML c,c#,xml,iso,iso8583,C#,Xml,Iso,Iso8583,执行时,我在这个位置得到错误。 XDocument doc=XDocument.ParseBuildIsoMessage.Properties.Resources.Deneme//我通过这种方式从参考资料中获取文档 ` GenericPackager packager = new GenericPackager(doc.ToString());` jpos.dll中发生类型为“org.jpos.iso.ISOException”的未处理异常。其他信息:读取时出错 我正在尝试用c语
` GenericPackager packager = new GenericPackager(doc.ToString());`
jpos.dll中发生类型为“org.jpos.iso.ISOException”的未处理异常。其他信息:读取时出错
我正在尝试用c语言构建一个ISO消息。我将Jar文件转换成一个dll文件,并使用一些名称空间
使用org.jpos.util;
使用org.jpos.iso;
使用org.jpos.iso.channel;
使用org.jpos.iso.packager;
但是我不能打包我的xml文件,它会抛出一个错误
这太简单了,无法使用第三方dll。使用xml linq:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication1
{
class Program
{
const string FILENAME = @"c:\temp\test.xml";
static void Main(string[] args)
{
string xmlHeader =
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>" +
"<!DOCTYPE isopackager PUBLIC" +
" \"-//jPOS/jPOS Generic Packager DTD 1.0//EN\"" +
" \"http://jpos.org/dtd/generic-packager-1.0.dtd\" >" +
"<!-- ISO 8583:1987 (ASCII) field descriptions for GenericPackager -->" +
"<isopackager>" +
"</isopackager>";
//<isofield
XDocument doc = XDocument.Parse(xmlHeader);
XElement isoPackager = doc.Descendants("isopackager").FirstOrDefault();
List<IsoField> isoFields = new List<IsoField>() {
new IsoField() { id= 0, length= 4, name="MESSAGE TYPE INDICATOR", cClass = "org.jpos.iso.IFA_NUMERIC"},
new IsoField() { id= 1, length= 16, name="BIT MAP", cClass= "org.jpos.iso.IFA_BITMAP"},
new IsoField() { id= 2, length= 19, name="PAN - PRIMARY ACCOUNT NUMBER", cClass= "org.jpos.iso.IFA_LLNUM"}
};
foreach (IsoField isofield in isoFields)
{
isoPackager.Add(new XElement("isofield", new object[] {
new XElement("id", isofield.id),
new XElement("length", isofield.length),
new XElement("name", isofield.name),
new XElement("class", isofield.cClass)
}));
}
doc.Save(FILENAME);
}
}
public class IsoField
{
public int id {get; set;}
public int length { get; set; }
public string name { get; set; }
public string cClass { get; set; }
}
}
当提供如下路径时,JPOSDLL工作正常 GenericValidatingPackager=新的GenericValidatingPackager;
packager.readFilec:/isoxml/iso8583binary.xml 这是创建xml文件的好方法,但我已经创建了一个xml文件,问题是GenericPackager packager=new GenericPackagerdoc.ToString;不接受xml文件。看起来通用打包程序需要流。所以StringReader=newStringReaderDoc.toString;GenericPackager packager=新的GenericPackagerreader;实际上在Java InputStream中是=getClass.getResourceAsStream/fields.xml;这样做,我找不到一种方法把它转换成C,把它读成一个记忆流。内存流需要一个字节[],因此使用MemoryStream stream=new MemoryStreamEncoding.UTF8.GetBytesdoc.ToString;流位置=0;GenericPackager packager=新的GenericPackagerstream;我甚至试过MemoryStream stream=new MemoryStream encoding.UTF8.GetBytesdeneme.xml;StreamReader=新的StreamReaderstream;字符串文本=reader.ReadToEnd;但是我得到了这个异常在jpos.dll中发生了一个类型为'org.jpos.iso.ISOException'的未处理异常附加信息:读取deneme.xml时出错谁给我负1?解释原因,不要投反对票。好主意!但是现在它抛出了这个错误附加信息:org.xml.sax.SAXException:SAX2驱动程序类org.apache.crimson.parser.XMLReaderImpl not Found我通过下载apache.crimson并与其他文件一起解析到dll中解决了这个问题@普布都你就是那个男人,非常感谢。