Bagaimana cara menjalankan biner tertanam di aplikasi SwiftUI Mac?

Aug 19 2020

Saya mencoba mengembangkan validator XML yang sangat sederhana berdasarkan XIDEL.

Inilah kode SwiftUI saya sejauh ini, yang mengeksekusi biner XIDEL yang disematkan, tetapi saya tidak tahu cara meneruskan XML yang harus divalidasi. Tujuan saya adalah memilih file XML dari komputer saya dan menunjukkan hasil XIDEL dalam tampilan konten di dalam aplikasi saya.

struct ContentView: View {

@State var message = "Hello, World!"
@State var isRunning = false

var body: some View {
    VStack {
        Text("XML Validator")
            .font(.largeTitle)
            .padding()
        HStack {
            TextField("Message", text: $message)
                .padding(.leading)
            Button(action: {

                let task = Process()
                let bundle = Bundle.main
                let execURL = bundle.url(forResource: "xidel", withExtension: nil)
                guard execURL != nil else {
                    print("XIDEL executable could not be found!")
                    return
                }
                task.executableURL = execURL!
                task.arguments = ["-e=//recipe/flavor1/text() my.xml"]
                do {
                    try task.run()
                    print("XIDEL executed successfully!")
                    self.isRunning = true
                } catch {
                    print("Error running XIDEL: \(error)")
                    self.isRunning = false
                }
                                    
            }) {
                Text("Validate")
            }.disabled(isRunning)
                .padding(.trailing)
        }
    }.frame(maxWidth: .infinity, maxHeight: .infinity)
}

}

Jawaban

1 Asperi Aug 19 2020 at 18:05

Coba berikut ini

    guard let path = Bundle.main.path(forResource: "my", ofType: "xml") else {
       print("my.xml could not be found!")
       return 
    }
    task.arguments = ["-e=//recipe/flavor1/text()", path]