2016-07-28 7 views
-1

の特定のノード内のテキストを置換するための簡単な方法がありますが、私は同様のテンプレートを使用してファイルをたくさん持っている:今は、例えば、XML

<book book_id="foo"> 
    <title>Examples in different languages</title> 
    <book_section>Tutorials</book_section> 
     <body> 
     <p>Some text</p> 
     <section> 
      <sectionheader>if</sectionheader> 
      <sectionbody> 
       <p>Depending on language you use, the sytax will be different:</p> 
       <scriptsample> 
        <language_a> 
         <block> 
          <p> 
           &nbsp;&nbsp;...<br/> 
           &nbsp;&nbsp;<i>Do a comparation</i><br/> 
           &nbsp;&nbsp;<b>if</b> (a == b)<br/><br/> 
           &nbsp;&nbsp;{<br/> 
           &nbsp;&nbsp;&nbsp;&nbsp;do what you want<br/> 
           &nbsp;&nbsp;}<br/> 
          </p> 
         </block> 
        </language_a> 
        <language_b> 
         <block> 
          <p> 
           &nbsp;&nbsp;...<br/> 
           &nbsp;&nbsp;<i>Do a comparation</i><br/> 
           &nbsp;&nbsp;<b>if</b> (a == b)<br/><br/> 
           &nbsp;&nbsp;{<br/> 
           &nbsp;&nbsp;&nbsp;&nbsp;do what you want<br/> 
           &nbsp;&nbsp;}<br/> 
          </p> 
         </block> 
        </language_b> 
       </scriptsample> 
      </sectionbody> 
     </section> 
     <p>Some other text</p> 
     <section> 
      <sectionheader>while</sectionheader> 
      <sectionbody> 
       <p>Depending on language you use, the sytax will be different:</p> 
       <scriptsample> 
        <language_a> 
          <p> 
           &nbsp;&nbsp;...<br/> 
           &nbsp;&nbsp;<i>Do a comparation</i><br/> 
           &nbsp;&nbsp;<b>while</b> (a == b)<br/><br/> 
           &nbsp;&nbsp;{<br/> 
           &nbsp;&nbsp;&nbsp;&nbsp;do what you want<br/> 
           &nbsp;&nbsp;}<br/> 
          </p> 
        </language_a> 
        <language_b> 
          <p> 
           &nbsp;&nbsp;...<br/> 
           &nbsp;&nbsp;<i>Do a comparation</i><br/> 
           &nbsp;&nbsp;<b>while</b> (a == b)<br/><br/> 
           &nbsp;&nbsp;{<br/> 
           &nbsp;&nbsp;&nbsp;&nbsp;do what you want<br/> 
           &nbsp;&nbsp;}<br/> 
          </p> 
        </language_b> 
       </scriptsample> 
      </sectionbody> 
     </section> 
    <body> 
</book> 

、私はcompare(a, b)でテキスト(a == b)を交換したいです language_b要素にのみ存在します。

私はAltova XMLSpyでXPathを使用してすべてのファイルを検索できましたが、ファイルを変更することはできません。

正規表現を作成しようとしましたが、失敗しました。

ちなみにもう一つの障害は、abがメソッドコール(obj.method(args))であることです。

for $x in //language_b/*[contains(., 'a == b')] return 
replace value of node $x with (
replace($x, 'a == b', 'compare(a, b)') 
) 

しかし、それは子供を失い:だからここに正規表現を使用して、その本当に難しいが、それは別のタスクである)

私はまた、XQueryはまた、AltovaのXMLSpyのでアップデート要素の機能を()の適用実行しようとしました"language_b"内の要素。 (i,nbspなど)。また、Altovaはファイル全体にデフォルトの属性を追加するため、無駄な要素のために悲しいです。

私の前にこのような仕事はなかったとは思わない。

提案はありますか?

PS。今私はC#でDOMを使用して何かを作成しようとしています(ただし、知識が不足しているため時間がかかる)

+0

プログラミング環境を使いたいのであれば、それを検索してください。これまで何度も尋ねられ、答えられてきました。 – Gordon

+1

私はxpathとvtd-xmlでこれを行うためにいくつかのコードスニペットを投稿しますが、あなたは置換基準が何であるかのより具体的な例を提供しなければなりません... –

答えて

0

これにはdomまたはstaxを使用してみてください。