1

domパッケージを使用して XML ファイルを解析しようとしていますが、次のエラーが表示されます。

unterminatedattribute {invalid attribute list around line 4}

簡単なテストは次のとおりです。

 package require dom;
 set XML "
    <Top>
    <Name name='name' />
    <Group number=1>
    <Member name='name1' test='test1' l=100/>
    </Group>
    </Top>"
set doc [::dom::parse $XML]

set root [$doc cget -documentElement]

set node [$root cget -firstChild]
puts "[$node cget -nodeValue]"
4

2 に答える 2

3

その「XML」は実際には正式に無効です。すべての属性値は引用符で囲む必要があります。できれば、それを修正してください。

set XML "
    <Top>
    <Name name='name' />
    <Group number='1'>
    <Member name='name1' test='test1' l='100'/>
    </Group>
    </Top>"

それを修正できない場合は、HTML モードで代わりにtDOMを使用してみてください (これは、すべての要素と属性名も小文字にしますが、整形式の制約に関してはかなり緩いです)。それでも、特定の入力ドキュメントでは失敗します。

% package require tdom
0.8.3
% set doc [dom parse -html $XML]
error "Unterminated element 'group' (within 'member')" at position 114
">
    <group number=1>
    <member name='name1' test='test1' l=100/>
    </group> <--Error-- 
    </Top>"

ドキュメントを修正することは、やるべきことの第 1 位です。

于 2013-07-16T08:01:50.533 に答える
2

"問題は、要素の値をまたはで囲む必要があることです'。XML を修正した後、解析は成功しました。

私は通常 dom パッケージを使用せず、代わりにtdomパッケージを使用します。
tdom パッケージには、-html緩やかな解析を可能にするオプションがあります。

于 2013-07-16T07:55:12.587 に答える