如何在XML元素中包含“ /”或“ @”?

时间:2019-01-29 07:45:55

标签: xml

我正在创建XML文件,并且具有类似<dependency> <groupId>org.graalvm.js</groupId> <artifactId>js</artifactId> <version>1.0.0-rc10</version> </dependency> <dependency> <groupId>org.graalvm.js</groupId> <artifactId>js-scriptengine</artifactId> <version>1.0.0-rc10</version> </dependency> <dependency> <groupId>org.graalvm.truffle</groupId> <artifactId>truffle-api</artifactId> <version>1.0.0-rc10</version> </dependency>

的元素

含义是:

/tns:Faktura/@typ </tns:Faktura/@typ>G<//tns:Faktura/@typ> </tns:Faktura/tns:P_1>43285<//tns:Faktura/tns:P_1> </tns:Faktura/tns:P_106E_2>false<//tns:Faktura/tns:P_106E_2>

我尝试替换无效字符,但无法使其正常工作。 我的标题只是标准的。我正在按每个结束标记关闭记录和架构。

</tns:Faktura/tns:P_106E_3>false<//tns:Faktura/tns:P_106E_3>

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

我正在尝试将Excel文件导出为XML,然后由TAX当局读取,他们需要标头保持完整,以便他们的软件能够读取该文件。

2 个答案:

答案 0 :(得分:1)

您的XML元素永远都不会像这样

  

XML元素必须遵循以下命名规则:

     
      
  • 元素名称区分大小写
  •   
  • 元素名称必须以字母或下划线开头
  •   
  • 元素名称不能以字母xml(或XML或Xml等)开头
  •   
  • 元素名称可以包含字母,数字,连字符,下划线和句点
  •   
  • 元素名称不能包含空格
  •   
     

可以使用任何名称,不保留任何单词(xml除外)。

从我看来,您的XML可能看起来应该像这样:

<?xml version="1.0" encoding="utf-8"?>
<JPK_FAS_SALES_INVOICES xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:tns="http://www.yournamespace.com/tns">
    <!-- ... -->
    <tns:Faktura typ="G">
        <tns:P_1>43285</tns:P_1>
        <tns:P_106E_2>false</tns:P_106E_2>
        <tns:P_106E_3>false</tns:P_106E_3>
    </tns:Faktura>
    <!-- ... -->
</JPK_FAS_SALES_INVOICES>

不要忘记定义您的命名空间tns

答案 1 :(得分:1)

元素名称必须满足3.2 Element Type Declarations中阐明的要求。特别地,元素名称是[name][2]并以这种方式构建:

[4]       NameStartChar      ::=      ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]
[4a]      NameChar       ::=      NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]
[5]       Name       ::=      NameStartChar (NameChar)*

更明确地说,不允许在元素名称中使用/@