-1

例如,我有很多具有类似模板的文件:

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

现在,我想在 language_b 元素(a == b)中用compare(a, b)ONLY 替换文本。

我设法在 Altova XMLSpy 中使用 XPath 找到了所有文件,但我无法更改文件。

我试图为此创建一个正则表达式,但我失败了。

顺便说一句,另一个障碍是a方法b调用(obj.method(args))。所以在这里使用正则表达式真的很难,但这是另一项任务)

我还尝试做一个 XQuery 应用更新元素功能(也在 Altova XMLSpy 中):

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

但它会丢失“language_b”中的子元素。(如inbsp等等)。此外,Altova 在整个文件中添加了默认属性,这让我因为无用的元素而感到难过。

我不相信在我之前没有这样的任务。

有什么建议吗?

PS。现在我正在尝试通过在 C# 中使用 DOM 创建一个东西(但由于缺乏知识,这需要很长时间)

4

1 回答 1

0

尝试为此使用 dom 或 stax。

于 2016-07-28T05:56:44.157 回答