2016-04-07 21 views
0

URL/URIに変換するために、Lotus Notesのドキュメントリンク(クリップボードから取得)を解析しようとしています。クリップボードのオプションから、テキスト形式からデータを取得する方が簡単に変換できるように見えます。しかし、リンクは本当にひどい形のXMLのように見え、lxmlは解析中に情報を失います。lxmlでLotus Notesのクリップボードリンクを解析します。

data = """Name - Enc: Injeção 
<NDL> 
<REPLICA 83257B7B:00608A81> 
<VIEW OFDCBCE5C7:007D345D-ON882572F4:00650240> 
<NOTE OFD18FCA06:36A9EDA2-ON83257F6A:004E31C1> 
<HINT>CN=SERV101/OU=RJ/OU=C/O=Company</HINT> 
<REM>Database 'Name', View 'Inbox', Document 'Enc: Injeção'</REM> 
</NDL> 
""" 
from lxml import html, etree 
title, ndl = html.fragments_fromstring(data) 
replica = ndl[0] 
view = replica[0] 
print replica.attrib 
print view.attrib 
print html.tostring(ndl) 

この版画:だから

{} 
{'ofdcbce5c7:007d345d-on882572f4:00650240': ''} 
<ndl> 
<replica> 
<view ofdcbce5c7:007d345d-on882572f4:00650240> 
<note ofd18fca06:36a9eda2-on83257f6a:004e31c1> 
<hint>CN=SERV101/OU=RJ/OU=C/O=Company</hint> 
<rem>Database 'Name', View 'Inbox', Document 'Enc: Inje&#195;&#167;&#195;&#163;o'</rem> 
</note></view></replica></ndl> 

、私はハイフンがここに違いを生むことがあり、私は何とか疑い(私はまだVIEW 1からいくつかを取得していても、REPLICAタグから情報を失いますよ)。

したがって、lxmlですべてのデータを取得する方法はありますか、またはRegExpに戻す必要がありますか?

環境情報:

  • のWindows 7 64ビット
  • のPython 2.7.11 |アナコンダ2.4.1(32ビット)
  • LXML 3.4.4
+0

使用しているLotus Notesのバージョンは?最近のバージョンでは、notes:// URLをクリップボードに置き換えることになっていたような印象を受けました。 (考えてみると、それはドラッグ・ドロップ操作の場合のみであるかもしれません。どのようにデータをクリップボードに置いていますか?) –

+0

Lotus Notes 8.5.3。ドキュメントを右クリックし、[ドキュメントリンクとしてコピー]を選択してリンクをコピーします。 –

答えて

0

ますbs4の方がよいでしょう:

data = """Name - Enc: Injeção 
<NDL> 
<REPLICA 83257B7B:00608A81> 
<VIEW OFDCBCE5C7:007D345D-ON882572F4:00650240> 
<NOTE OFD18FCA06:36A9EDA2-ON83257F6A:004E31C1> 
<HINT>CN=SERV101/OU=RJ/OU=C/O=Company</HINT> 
<REM>Database 'Name', View 'Inbox', Document 'Enc: Injeção'</REM> 
</NDL> 
""" 
from lxml.etree import fromstring, HTMLParser 
xml = fromstring(data, HTMLParser()) 
r = xml.xpath("//replica") 


from bs4 import BeautifulSoup 

soup = BeautifulSoup(data,"html.parser") 

title = next(soup.find("ndl").previous_elements) 
print(title) 
print(soup.find("replica").attrs) 
print(soup.find("view")) 

あなたに与えるもの:

Name - Enc: Injeção 

{u'83257b7b:00608a81': ''} 
view ofdcbce5c7:007d345d-on882572f4:00650240=""> 
<note ofd18fca06:36a9eda2-on83257f6a:004e31c1=""> 
<hint>CN=SERV101/OU=RJ/OU=C/O=Company</hint> 
<rem>Database 'Name', View 'Inbox', Document 'Enc: Injeção'</rem> 
</note></view> 
関連する問題