2016-04-16 19 views
0

私は、文字列で、このXMLデータを持っている:エラー:lxml.etree.XMLSyntaxError:予想 '>'

<?xml version="1.0" encoding="UTF-8"?> 
<class name="C" kind ="concrete"> 
    <inheritance> 
     <from name="A" privacy="public" /> 
     <from name="B" privacy="public" /> 
    </inheritance> 
    <private> 
     <methods> 
      <method name="C" type="C" scope="instance"> 
       <arguments></arguments> 
     </methods> 
    </private> 
</class> 

私は、XPathを使用していくつかの要素を見つけたいです。限り、これは私のコードです:

utf8_parser = etree.XMLParser(encoding='utf-8') 
root = etree.fromstring(string.encode('utf-8'), parser=utf8_parser) 
somelist = root.findall(xpathString) 

私はこのエラーを得た:

root = etree.fromstring(stringOutput.string.encode('utf-8'), parser=utf8_parser) 
    File "lxml.etree.pyx", line 3032, in lxml.etree.fromstring (src/lxml/lxml.etree.c:68106) 
    File "parser.pxi", line 1785, in lxml.etree._parseMemoryDocument (src/lxml/lxml.etree.c:102455) 
    File "parser.pxi", line 1673, in lxml.etree._parseDoc (src/lxml/lxml.etree.c:101284) 
    File "parser.pxi", line 1074, in lxml.etree._BaseParser._parseDoc (src/lxml/lxml.etree.c:96466) 
    File "parser.pxi", line 582, in lxml.etree._ParserContext._handleParseResultDoc (src/lxml/lxml.etree.c:91275) 
    File "parser.pxi", line 683, in lxml.etree._handleParseResult (src/lxml/lxml.etree.c:92461) 
    File "parser.pxi", line 622, in lxml.etree._raiseParseError (src/lxml/lxml.etree.c:91757) 
lxml.etree.XMLSyntaxError: expected '>', line 11, column 11 

私は問題は、文字列内の二重引用符であることと考えていました。出来ますか? xpathを使用して要素を見つける適切なコードはどのように見えますか?

+0

あなたのメソッド要素は閉じられていません。 –

+0

私はちょうどそれを言っていませんでしたか?(http://stackoverflow.com/a/36668376/290085)? :-) – kjhughes

答えて

2

属性値を区切る二重引用符は完全にうまくいきますが、終了タグがない要素はmethodではありません。あなたのXMLは整形式であると修復されました:

<?xml version="1.0" encoding="UTF-8"?> 
<class name="C" kind ="concrete"> 
    <inheritance> 
     <from name="A" privacy="public" /> 
     <from name="B" privacy="public" /> 
    </inheritance> 
    <private> 
     <methods> 
      <method name="C" type="C" scope="instance"> 
       <arguments></arguments> 
      </method> 
     </methods> 
    </private> 
</class> 
+0

ありがとうございますが、別のエラーが発生します。 'lxml.etree.XMLSyntaxError:開始タグと終了タグの不一致:メソッド行4とprivate、行12、列19'。 lxml関数を正しく使用していますか? –

+1

このエラーは、問題がXMLにあることを示していますが、私の回答のXMLが整形式であることを再確認しました。私はあなたが慎重にあなたが提供されている通りにそれを使用していることを再確認することをお勧めします。コピーアンドペーストは手動で作成するよりも安全です。それでも問題が解決しない場合は、問題を示す[mcve]を作成します。 – kjhughes

+0

修復されたxmlをコピーして正確に使用したので、問題はxmlファイルに存在してはいけません。これは私が持っているものです: 'File" /usr/lib/python3/dist-packages/lxml/_elementpath.py "、line 214、in prepare_predicate raise SyntaxError( "無効な述語") SyntaxError:無効な述語 ' –

関連する問題