0

adobe illustratorのスクリプティング用にextendscriptを学んでいます.xml関連の解析を書くのはとても難しいです. 私の問題文を以下に示します。-「名前、都市、国という 3 つのテキスト ボックスを使用しました。「名前」は一意のキーです。[OK] ボタンをクリックすると、名前が存在しない場合はデータを xml に保存する必要があります。それ以外の場合は更新します。重複を作成せずに以前の名前.xml ファイル内のすべての名前がリスト ボックスに表示されます.特定の名前の日付は、リスト ボックスの選択した項目のデータを削除する削除ボタンで削除できます.私がしようとしたコードは次のとおりです: -

   var myWindow = new Window ("dialog", "Form");
   var txt1 = myWindow.add ("edittext");//name unique
   var txt2 = myWindow.add ("edittext");//city
   var txt3 = myWindow.add ("edittext");//country
   var btn=myWindow.add ("button", undefined, "OK");
   btn.onClick = function () {
   for (i=0;i<numberofnamesinxml;i++)//coding required
   {
      if(txt1.text!=xmlname[i]) // to verify name not there since it is like      primary key
       xmlFile.open("a");  
       xmlFile.write(root.toXMLString());
       xmlFile.copy ('C:/data.xml');
       xmlFile.close();
      //myList refresh
   }
}
   var myList = myWindow.add ("listbox");
   for (i=0;i<numberofnamesinxml;i++)//coding required
   {
       config='C:/data.xml';
       config.open("r");  
       data= xmlname[i] //here i need to set data to  
       config.close();  
       myList.add ("item", data);
   }
   var btn1=myWindow.add ("button", undefined, "remove");
   btn1.onClick = function () {
   myList.remove (myList1.selection[i]);
   //xml data having this list name must be removed
   }
   myWindow.show ();

親切に私を助けてください。

4

1 に答える 1

0

これは完全な答えと見なされるべきではありません。見つけるのに役立つかもしれないので、私はまだ投稿します。

これは私が答えとして書いてみたものです。読み取り/書き込み部分は機能しますが、要素が存在するかどうかのチェックは失敗します。が完全に一致しない場合child、xml.contains(xml) は true を返しません。

var path = '~/Desktop/test.xml';
var xmlfile = File(path);
if (!xmlfile.exists) {
  $.writeln('xml file does not exist. Creating new one');
  xmlfile = new File(path);
  xmlfile.open('w');
  xmlfile.write('<Root></Root>');
  xmlfile.close();
}
xmlfile.open('r');
xmlcontent = xmlfile.read();
xmlfile.close();
//$.writeln(xmlcontent);
var xml = new XML(xmlcontent);

// here the problems start
// the check is only working for known elements
var child = new XML('<name data="bob"></name>');
if (xml.contains(child)) {
  child.@data = 'jim';
  $.writeln('A child called "name" exists. Update');
  xml.replace('name', child);
} else {
  $.writeln('no child called "name" exists. Append');
  child.@data = 'bob';
  xml.appendChild(child);
}
xmlfile.open('w');
xmlfile.write(xml.toXMLString());
xmlfile.close();

私の本当の答えは、 代わりに JSON を使用することです。

于 2016-04-29T07:28:51.900 に答える