IsoMessage 8583 XML c#

IsoMessage 8583 XML c#

执行时,我在这个位置收到错误。
XDocument doc = XDocument.Parse(BuildIsoMessage.Properties.Resources.Deneme);//我是这样从资源中获取文档的

       ` GenericPackager packager = new GenericPackager(doc.ToString());`

An unhandled exception of type 'org.jpos.iso.ISOException' occurred in jpos.dll.Additional information: Error reading <!DOCTYPE isopackager PUBLIC "-//jPOS/jPOS Generic Packager DTD 1.0//EN" "http://jpos.org/dtd/generic-packager-1.0.dtd"[]>

我正在尝试用 C# 构建 ISO 消息。我将 Jar 文件转换为一个 dll 文件并使用了一些命名空间 using org.jpos.util; using org.jpos.iso; using org.jpos.iso.channel; using org.jpos.iso.packager; 但是我无法打包我的 xml 文件,它会引发错误。

https://github.com/jpos/jPOS/blob/master/jpos/src/main/resources/packager/iso87ascii.xml

使用第 3 方 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; }
    }

}

Jpos dll 在提供如下路径时工作正常

GenericValidatingPackager packager = new GenericValidatingPackager(); packager.readFile("c:/isoxml/iso8583binary.xml");