Note that there are some explanatory texts on larger screens.

plurals
  1. POReplace multiple texts with their corresponding texts in XML using Python - Part 2 -
    primarykey
    data
    text
    <p>I would like to replace a text of <a href="/questions/tagged/aliasname" class="post-tag" title="show questions tagged 'aliasname'" rel="tag">aliasname</a> element with a text from <a href="/questions/tagged/name" class="post-tag" title="show questions tagged 'name'" rel="tag">name</a> if there is no corresponding key in the dictionary. </p> <p>here is the xml that I am working on now. </p> <pre><code>- &lt;esri:Workspace xmlns:esri="http://www.esri.com/schemas/ArcGIS/10.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema"&gt; - &lt;WorkspaceDefinition xsi:type="esri:WorkspaceDefinition"&gt; &lt;WorkspaceType&gt;esriLocalDatabaseWorkspace&lt;/WorkspaceType&gt; &lt;Domains xsi:type="esri:ArrayOfDomain" /&gt; - &lt;DatasetDefinitions xsi:type="esri:ArrayOfDataElement"&gt; - &lt;DataElement xsi:type="esri:DEFeatureClass"&gt; &lt;CatalogPath&gt;/FC=CHO_H12&lt;/CatalogPath&gt; &lt;Name&gt;CHO_H12&lt;/Name&gt; &lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt; &lt;DSID&gt;8&lt;/DSID&gt; &lt;Versioned&gt;false&lt;/Versioned&gt; &lt;CanVersion&gt;false&lt;/CanVersion&gt; &lt;ConfigurationKeyword /&gt; &lt;HasOID&gt;true&lt;/HasOID&gt; &lt;OIDFieldName&gt;OBJECTID&lt;/OIDFieldName&gt; - &lt;Fields xsi:type="esri:Fields"&gt; - &lt;FieldArray xsi:type="esri:ArrayOfField"&gt; - &lt;Field xsi:type="esri:Field"&gt; &lt;Name&gt;KEY_CODE&lt;/Name&gt; &lt;Type&gt;esriFieldTypeString&lt;/Type&gt; &lt;IsNullable&gt;true&lt;/IsNullable&gt; &lt;Length&gt;255&lt;/Length&gt; &lt;Precision&gt;0&lt;/Precision&gt; &lt;Scale&gt;0&lt;/Scale&gt; &lt;AliasName&gt;リンクコード&lt;/AliasName&gt; # to "KEY_CODE" &lt;ModelName&gt;KEY_CODE&lt;/ModelName&gt; &lt;/Field&gt; - &lt;Field xsi:type="esri:Field"&gt; &lt;Name&gt;KEN&lt;/Name&gt; &lt;Type&gt;esriFieldTypeString&lt;/Type&gt; &lt;IsNullable&gt;true&lt;/IsNullable&gt; &lt;Length&gt;255&lt;/Length&gt; &lt;Precision&gt;0&lt;/Precision&gt; &lt;Scale&gt;0&lt;/Scale&gt; &lt;AliasName&gt;都道府県番号&lt;/AliasName&gt; # to "Prefecture_Code" &lt;ModelName&gt;KEN&lt;/ModelName&gt; &lt;/Field&gt; - &lt;Field xsi:type="esri:Field"&gt; &lt;Name&gt;CITY&lt;/Name&gt; &lt;Type&gt;esriFieldTypeString&lt;/Type&gt; &lt;IsNullable&gt;true&lt;/IsNullable&gt; &lt;Length&gt;255&lt;/Length&gt; &lt;Precision&gt;0&lt;/Precision&gt; &lt;Scale&gt;0&lt;/Scale&gt; &lt;AliasName&gt;市区町村番号&lt;/AliasName&gt; # to "City_code" &lt;ModelName&gt;CITY&lt;/ModelName&gt; &lt;/Field&gt; </code></pre> <p>I wrote;</p> <pre><code>#!/usr/bin/env python # -*- coding: utf-8 -*- import xml.etree.cElementTree as etree jp2en = {'リンクコード': 'KEY_CODE', '都道府県番号': 'Prefecture_Code', '市区町村番号': 'City_Code'} tree = etree.parse('input.xml') for field in tree.iterfind('.//Fields/FieldArray/Field'): name, alias = [field.find(tag) for tag in ['Name', 'AliasName']] if name is None or alias is None: continue alias.text = jp2en.get(name.text.strip(), name.text) tree.write('output.xml', encoding='utf-8') </code></pre> <p>However, for the output, a text of <a href="/questions/tagged/aliasname" class="post-tag" title="show questions tagged 'aliasname'" rel="tag">aliasname</a> element is replaced by a text from <a href="/questions/tagged/name" class="post-tag" title="show questions tagged 'name'" rel="tag">name</a> even when there is corresponding key in the dictionary, jp2en like this;</p> <pre><code>&lt;AliasName&gt;リンクコード&lt;/AliasName&gt; Returns a text "KEY_CODE" # the text is the same for Name and a key. &lt;AliasName&gt;都道府県番号&lt;/AliasName&gt; Returns a text "KEN" from Name instead of a key "Prefecture_Code" &lt;AliasName&gt;市区町村番号&lt;/AliasName&gt; Returns a text "CITY" from Name instead of a key "City_code" </code></pre> <p>I use python 3.2.2.</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload