2

XML ファイル (拡張子「NDS」) をデータとして Android アプリに読み込もうとしています。私は DOM DocumentBuilder ルートを選択し、その parse メソッドを呼び出します。

問題は、ノード名の 1 つに非 ASCII デルタ (Δ) 文字が存在することです。これにより、解析操作が DOMException で失敗します。問題のある行を削除すると、機能します。

.NET ライブラリ メソッドを使用して Windows で作成した XML ファイル自体には、.NET というヘッダーがあり<?xml version="1.0" encoding="utf-8"?>ます。(このヘッダーの前に 3 バイトの BOM があることにも気付きました。)

問題のある行の周りの XML 階層は次のようになります。

<?xml version="1.0" encoding="utf-8"?>
<NDS SoftwareIdentity="MicroAnalyzer 2000" SoftwareVersion="3.5.8" WindowsVersion="Microsoft Windows NT 5.1.2600 Service Pack 3" CLRVersion="2.0.50727.3615" MachineName="SYSTEM2000_3033" MachineDescription="" DataSource="System2000_3033\SQLEXPRESS" Date="3/31/2012" Time="11:15 AM">
    <ASME_B46_1_2002DataSet xmlns="http://tempuri.org/ASME_B46_1_2002DataSet.xsd">
        <ASME_B46_1_2002RoughnessInstanceTable>
            <InstanceAppendixId>-1</InstanceAppendixId>
            <RΔaEnabled>false</RΔaEnabled>
        </ASME_B46_1_2002RoughnessInstanceTable>
    </ASME_B46_1_2002DataSet>
</NDS>

デルタ文字は UTF-8 で受け入れられると思われるかもしれませんが、実際、この XML は Internet Explorer によって適切に解釈されます。

4

2 に答える 2

1

http://www.w3.org/TR/REC-xml/#NT-NameCharを読む

[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]

XML 1.0で有効なUnicode文字がありますが、すべてではありません。あなたの文字(#x394)は、[#x37F-#x1FFF]の範囲にある有効なNameStartCharです。

于 2012-05-25T15:18:24.350 に答える
-1

XML 1.0では、要素名と属性名にASCII文字のみを含める必要があると思います(一部の非印刷ASCII文字は禁止されています)。UTF-8エンコーディングを宣言すると、非ASCII文字を要素と属性の値に表示できます。

XML 1.1はこれを緩和して、要素と属性名にUnicode、非ASCII文字を使用できるようにしました。

于 2012-05-25T14:47:14.287 に答える