2016-04-07 13 views
0

Ich versuche, eine Lotus Notes Dokument Link (aus der Zwischenablage) zu analysieren, um es in eine notes:// URL/URI zu konvertieren. Aus den Optionen für die Zwischenablage wird ersichtlich, dass das Konvertieren von Daten aus einem Textformat einfacher ist. Der Link sieht jedoch wie ein wirklich schlecht geformter XML-Code aus und lxml verliert beim Parsen Informationen.Parsen Lotus Notes Zwischenablage Verknüpfung mit Lxml

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) 

Diese Drucke:

{} 
{'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> 

Also, ich verliere Informationen aus dem REPLICA-Tag, obwohl ich einige noch von der einen VIEW (ich vermute irgendwie der Bindestrich den Unterschied hier machen kann).

Also, gibt es eine Möglichkeit, alle Daten mit lxml zu erhalten oder muss ich wieder zu RegExp zurückkehren?

Umwelt Info:

  • Windows 7, 64-Bit-
  • Python 2.7.11 | Anaconda 2.4.1 (32-Bit)
  • LXML 3.4.4
+0

Welche Version von Lotus Notes verwenden Sie? Ich hatte den Eindruck, dass neuere Versionen die URL "notes: //" als eines der alternativen Formate in die Zwischenablage einfügen sollten. (Denken Sie daran, das könnte nur für Drag-Drop-Operationen sein. Wie setzen Sie die Daten in die Zwischenablage?) –

+0

Lotus Notes 8.5.3. Ich kopiere den Link, indem ich mit der rechten Maustaste auf das Dokument klicke und "Als Dokumentverknüpfung kopieren" auswähle. –

Antwort

0

Sie könnte bs4 besser finden:

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")) 

Welche gibt Ihnen:

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> 
Verwandte Themen