KMLのdescriptionタグ内のhtmlを新しいフォーマット済みhtmlに置き換えたいと考えています。<description>のlxmlを使用したKMLのhtmlコンテンツの編集
私のKMLは、この構造を有する:
<html>
<body>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2">
<document id="WATER_MAINLINE_trim" xsi:schemalocation="http://www.opengis.net/kml/2.2 http://schemas.opengis.net/kml/2.2.0/ogckml22.xsd http://www.google.com/kml/ext/2.2 http://code.google.com/apis/kml/schema/kml22gx.xsd">
<name>
WATER_MAINLINE_trim
</name>
<open>
1
</open>
<snippet maxlines="0">
</snippet>
<style id="LineStyle00">
<LabelStyle>
<color>00000000</color>
<scale>0</scale>
</LabelStyle>
<LineStyle>
<color>ff240087</color>
</LineStyle>
<PolyStyle>
<color>00000000</color>
<outline>0</outline>
</PolyStyle>
</style>
<folder id="FeatureLayer0">
<name>
WATER_MAINLINE_trim
</name>
<open>
1
</open>
<snippet maxlines="0">
</snippet>
<placemark id="ID_00000">
<name>
0100026491
</name>
<snippet maxlines="0">
</snippet>
<description>
<meta content="text/html" http-equiv="Content-Type" />
<meta content="text/html; charset=utf-8" http-equiv="content-type" />
<table style="font-family:Arial,Verdana,Times;font-size:12px;text-align:left;width:100%;border-collapse:collapse;padding:3px 3px 3px 3px">
<tr style="text-align:center;font-weight:bold;background:#9CBCE2">
<td>
0100026491
</td>
</tr>
<tr>
<td>
<table style="font-family:Arial,Verdana,Times;font-size:12px;text-align:left;width:100%;border-spacing:0px; padding:3px 3px 3px 3px">
<tr>
<td>
FID
</td>
<td>
0
</td>
</tr>
<tr bgcolor="#D4E4F3">
<td>
PRIKEY
</td>
<td>
0100026491
</td>
</tr>
<tr>
<td>
YEAR_INST
</td>
<td>
2001
</td>
</tr>
<tr bgcolor="#D4E4F3">
<td>
PIPE_CLASS
</td>
<td>
PRIMARY
</td>
</tr>
<tr>
<td>
DIAMETER
</td>
<td>
1500
</td>
</tr>
<tr bgcolor="#D4E4F3">
<td>
MATERIAL
</td>
<td>
SP
</td>
</tr>
<tr>
<td>
STATUS
</td>
<td>
ACTIVE
</td>
</tr>
<tr bgcolor="#D4E4F3">
<td>
BA
</td>
<td>
FCOM
</td>
</tr>
<tr>
<td>
SUBCLASS
</td>
<td>
WATER MAINLINE
</td>
</tr>
</table>
</td>
</tr>
</table>
</description>
</placemark>
</folder>
</document>
</kml>
</body>
</html>
をそして私は、この新しいHTML持っている:私は正常になり、まだlxmlのを使用して解析されたKMLの内側にそれを交換し、どうすればよい
newhtml="""<![CDATA[ \n<!------------TITLE SUBCLASS---------------->\n <tr>\n <td colspan="2" align="center">\n <b><font color=\'#090259\' size=\'6\' style = \'bold\'>LA MESA BALARA</font><b>\n </td>/n </tr>\n<!------------IMAGE---------------->\n <tr>\n <td colspan="2" align="center">\n <img src= http://static.rappler.com/images/640-lamesadam-20120728.jpg, width=500, height = 223, alt="picture" />\n </td>\n </tr>\n<!------------PRIKEY---------------->\n <tr>\n <td bgcolor = \'#090259\', align="center" >\n <p><font color = \'FFFFFF\', size =\'4\'>PRIKEY</p>\n </td>\n \n <td bgcolor = \'#d8d8ff\' align="center">\n <p>0100026491</p>\n </td>\n<!------------YEAR INSTALLED---------------->\n <tr>\n <td bgcolor = \'#090259\', align="center" >\n <p><font color = \'FFFFFF\', size =\'4\'>Year Installed</p>\n </td>\n \n <td bgcolor = \'#d8d8ff\' align="center">\n <p>2001</p>\n </td>\n<!------------PIPE CLASS---------------->\n <tr>\n <td bgcolor = \'#090259\', align="center" >\n <p><font color = \'FFFFFF\', size =\'4\'>Pipe Class</p>\n </td>\n \n <td bgcolor = \'#d8d8ff\' align="center">\n <p>PRIMARY</p>\n </td>\n<!------------DIAMETER---------------->\n <tr>\n <td bgcolor = \'#090259\', align="center" >\n <p><font color = \'FFFFFF\', size =\'4\'>Diameter (mm)</p>\n </td>\n \n <td bgcolor = \'#d8d8ff\' align="center">\n <p>1500.000000</p>\n </td>\n<!------------MATERIAL---------------->\n <tr>\n <td bgcolor = \'#090259\', align="center" >\n <p><font color = \'FFFFFF\', size =\'4\'>Material</p>\n </td>\n \n <td bgcolor = \'#d8d8ff\' align="center">\n <p>SP</p>\n </td>\n<!------------STATUS---------------->\n <tr>\n <td bgcolor = \'#090259\', align="center" >\n <p><font color = \'FFFFFF\', size =\'4\'>Status</p>\n </td>\n \n <td bgcolor = \'#d8d8ff\' align="center">\n <p>ACTIVE</p>\n </td>\n<!------------BUSINESS ADDRESS---------------->\n <tr>\n <td bgcolor = \'#090259\', align="center" >\n <p><font color = \'FFFFFF\', size =\'4\'>Business Address</p>\n </td>\n \n <td bgcolor = \'#d8d8ff\' align="center">\n <p>Fairview-Commonwealth</p>\n </td>]]>"""
を有効なKMLですか? 「有効」とは、Google Earthに読み込むことができるkmlに関連しています。私はBeautifulSoupを使用して置換を試みましたが、Google Earthにロードすると、出力ファイルにエラーが発生します。それは、"予期しない要素" html ""と言います。ですから、代わりにlxmlを使用したいだけです。どんな助けもありがとう。ありがとうございました!
5つのLineString目印を含むこのサンプルのkmlがあります。
trim.kml = https://sites.google.com/site/kmlhostingmwss/trim.kml
KMLドキュメントの名前空間を確認してください。 'xsi'接頭辞は' '根で宣言されていません(整形式ではない)。私は ''のコピーエラーを想定しています。 –
Parfait
それを指摘してくれてありがとう@パルフェット。 Btw、もしあなたがGISに慣れていれば、ArcGISで 'Layer to KML'を使ってkmlを取得しました。基本的には、その名前空間でこのようなkml構造を与えるArcGISです。再度、感謝します! –