Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml BizTalk-为平面文件生成XSD,在记录的开始和结束处使用单词分隔符_Xml_Xsd_Biztalk_Flat File_Biztalk 2013 - Fatal编程技术网

Xml BizTalk-为平面文件生成XSD,在记录的开始和结束处使用单词分隔符

Xml BizTalk-为平面文件生成XSD,在记录的开始和结束处使用单词分隔符,xml,xsd,biztalk,flat-file,biztalk-2013,Xml,Xsd,Biztalk,Flat File,Biztalk 2013,我正在尝试基于以下文本文件(平面文件)构建一个XSD文件。我正在使用平面文件架构向导,但无法实现我想要的 :BEGIN Key1 Value1 Key2 Value2 :END :BEGIN Key1 Value1 Key2 Value2 Key3 Value3 :END :BEGIN :END XSD将类似于: Record (Delimited by :BEGIN and :END) |_Association (Delimited by \n) |_Key (Delimited by

我正在尝试基于以下文本文件(平面文件)构建一个XSD文件。我正在使用平面文件架构向导,但无法实现我想要的

:BEGIN
Key1 Value1
Key2 Value2
:END
:BEGIN
Key1 Value1
Key2 Value2
Key3 Value3
:END
:BEGIN
:END
XSD将类似于:

Record (Delimited by :BEGIN and :END)
|_Association (Delimited by \n)
  |_Key (Delimited by space, first occurence)
  |_Value (second occurence)
<Record>
  <Association>
    <Key>Key1</Key>
    <Value>Value1</Value>
  </Association>
  <Association>
    <Key>Key2</Key>
    <Value>Value2</Value>
  </Association>
</Record>
<Record>
  <Association>
    <Key>Key1</Key>
    <Value>Value1</Value>
  </Association>
  <Association>
    <Key>Key2</Key>
    <Value>Value2</Value>
  </Association>
  <Association>
    <Key>Key3</Key>
    <Value>Value3</Value>
  </Association>
</Record>
我希望将我的txt文件转换为xml中xsd文件的实例。结果是:

Record (Delimited by :BEGIN and :END)
|_Association (Delimited by \n)
  |_Key (Delimited by space, first occurence)
  |_Value (second occurence)
<Record>
  <Association>
    <Key>Key1</Key>
    <Value>Value1</Value>
  </Association>
  <Association>
    <Key>Key2</Key>
    <Value>Value2</Value>
  </Association>
</Record>
<Record>
  <Association>
    <Key>Key1</Key>
    <Value>Value1</Value>
  </Association>
  <Association>
    <Key>Key2</Key>
    <Value>Value2</Value>
  </Association>
  <Association>
    <Key>Key3</Key>
    <Value>Value3</Value>
  </Association>
</Record>

关键1
价值1
键2
价值2
关键1
价值1
键2
价值2
键3
价值3
只有2条记录,因为last:BEGIN:END块为空


我的主要问题是,我无法找到如何通过:START和:END标记来分隔记录。这是可能的吗?

是的,这是可能的,但用向导是不行的。这是一个在添加定义时手动构建和测试结构的问题

这是一个为:BEGIN和:END使用标记标识符的问题,也就是使用一个序列组来表示这些重复出现

另外,在
级别,将解析器优化设置为复杂性

根据行尾的定义,可能需要将0x0A 0x0D(回车和换行)调整为文件实际包含的内容。另外,如果最后一行没有以CR/LF结尾,则将其从后缀(after)更改为中缀(between)


通过您的示例输入

<Root xmlns="http://Scratch.SO63600733">
    <Record xmlns="">
        <BEGIN/>
        <Accociation>
            <Key>Key1</Key>
            <value>Value1</value>
        </Accociation>
        <Accociation>
            <Key>Key2</Key>
            <value>Value2</value>
        </Accociation>
        <END/>
    </Record>
    <Record xmlns="">
        <BEGIN/>
        <Accociation>
            <Key>Key1</Key>
            <value>Value1</value>
        </Accociation>
        <Accociation>
            <Key>Key2</Key>
            <value>Value2</value>
        </Accociation>
        <Accociation>
            <Key>Key3</Key>
            <value>Value3</value>
        </Accociation>
        <END/>
    </Record>
    <Record xmlns="">
        <BEGIN/>
        <END/>
    </Record>
</Root>

关键1
价值1
键2
价值2
关键1
价值1
键2
价值2
键3
价值3

哇,这太不可思议了,你太棒了,非常感谢!!大家好,我现在遇到了另一个问题,当我在这里使用你的xsd和我的txt文件的“验证实例”功能时,效果非常好。现在,当我使用带有平面文件反汇编程序的自定义接收管道部署我的项目时,它会对同一个txt文件抛出一个错误“剩余的流具有无法识别的数据”,有什么想法吗?@Gosfly Ok,做了两个小的调整1)从END标记中删除Min Occurs,这会导致它在Visual Studio中失败(因为最后一个端点没有出现在输出中)。2)在
定义中,将解析器优化更改为复杂性。试一试。在应用这两个小的调整之后,validate instance现在在VS以及管道中的平面文件反汇编程序中失败,在查找“'\r\n'@gossly时出现意外的流结尾:如果结尾没有回车和换行符,则将其从后缀更改为CR LF(0x0A 0x0D0)分隔符的中缀。此外,如果您只有一个或另一个,请将其更改为与您的文件匹配