Xcode 如何在SwiftUI Mac应用程序中运行嵌入式二进制文件?
我正在尝试开发一个基于XIDEL的非常简单的XML验证器 这是我到目前为止的SwiftUI代码,它执行嵌入的XIDEL二进制文件,但我不知道如何传递应该验证的XML。我的目标是从我的计算机中选择一个XML文件,并在我的应用程序内的内容视图中显示XIDEL结果Xcode 如何在SwiftUI Mac应用程序中运行嵌入式二进制文件?,xcode,macos,swiftui,embedded-binary,Xcode,Macos,Swiftui,Embedded Binary,我正在尝试开发一个基于XIDEL的非常简单的XML验证器 这是我到目前为止的SwiftUI代码,它执行嵌入的XIDEL二进制文件,但我不知道如何传递应该验证的XML。我的目标是从我的计算机中选择一个XML文件,并在我的应用程序内的内容视图中显示XIDEL结果 struct ContentView: View { @State var message = "Hello, World!" @State var isRunning = false var body: some
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)
}
}
尝试以下方法
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]
还有一种方法可以实现UNIX管道吗?如so/usr/local/bin/xidel-e=“//recipe/flavor1/text()my.xml | awk'!seen[$0]+'| awk'!/NA/”