2

QML を使用する Ubuntu touch 用のアプリケーションを作成しようとしています。私が今やろうとしているのは、xml ファイルを検索してテキストを変更することです。

これは私のXMLファイルです:

<phonelist>
  <phone>
    <name>drewphone</name>
    <lost>no</lost>
  </phone>
  <phone>
    <name>sarahpone</name>
    <lost>yes</lost>
  </phone>
</phonelist>

sarahphone または drawphone を検索してから、lost を yes または no に変更したいと考えています。これを行う簡単な方法はありますか?

4

3 に答える 3

2

QML にはファイル I/O がないため、そもそもこのファイルを実際にどのように読んでいるかについて興味があります。

この XML を XMLHttpRequest から取得すると仮定すると、この操作を JavaScript で行いたいように思えます。JavaScriptはデータ操作タスクを念頭に置いて設計されていないため、アクセスできるライブラリは文字列操作ライブラリだけです。本当に C++ (実際の XML パーサー ライブラリにアクセスできる場所) を書きたくない場合、かつ xml が非常にシンプルなままである場合は、正規表現を使用して適切なテキストを見つけて置き換えることができる場合があります。

于 2013-03-07T16:53:33.250 に答える
1

XSLT を使用して、XML を QML に変換できます。

参考:http ://www.w3schools.com/xsl/

于 2013-03-07T00:38:48.503 に答える
0

QML には、XML データから読み取り専用モデルXmlListModelを作成するために使用されるものがあります。ビュー要素 (ListView、PathView、GridView など) や、モデル データと対話するその他の要素 (Repeater など)のデータ ソースとして使用できます[参照 : XmlListModel ]。

それを行う最良の方法(つまり、XMLを操作する)は、c ++でヘルパークラスを作成することです(Qtのc ++側には優れたXMLライブラリQt XML C ++ Classesがあります)。を使用してQQmlContext::setContextProperty(const QString &name, QObject *value)。簡単でわかりやすい例については、この段落「オブジェクトをコンテキスト プロパティとして設定する」: Embedding C++ Objects into QML with Context Properties をお読みください。

于 2016-11-11T14:18:37.617 に答える