2016-11-16 1 views
0

루아를 사용하여 구문 분석하려는 간단한 xml 파일이 있습니다. 어떤 lua xml 라이브러리를 사용해야합니까? 나는 xml lib by Lubyk을 시도했지만 그것은 나를 위해 작동하지 않았다. 여기 루아에서 XML 파일을 구문 분석하는 방법은 무엇입니까?

내가 무슨 짓을 : $ sudo luarocks install xml

모듈 가져올 시도 : 함께 종료 require("xml")

: 그래서

error loading module 'xml.core' from file '/usr/lib/lua/5.3/xml/core.so': 
    /usr/lib/lua/5.3/xml/core.so: undefined symbol: lua_tonumber 
lua: /usr/share/lua/5.3/xml/init.lua:31: attempt to call a nil value (field 'Parser') 
stack traceback: 
    /usr/share/lua/5.3/xml/init.lua:31: in main chunk 
    [C]: in function 'require' 
    lua_doc_reader.lua:3: in main chunk 
    [C]: in ? 

를 루아에서 라이브러리를 읽는 사실상 XML은 무엇인가 ?

+0

[my lxml] (http://webserver2.tecgraf.puc-rio.br/~lhf/ftp/lua/index.html#lxml)은 expat를 기반으로합니다. – lhf

+1

"미안하지만,"지금까지는 Lua에 라이브러리를 추가하는 가장 쉬운 방법은 동적으로로드하는 것입니다. ", 읽지 않았습니다. – minerals

+1

내 게시물에는 "동적로드"가 없으며 xml을 읽는 간단한 방법을 찾고 있습니다. 또한 누군가가 Makefile을 편집하고 동적로드를 지원하기 위해 lua를 컴파일하여 웹 사이트에서 libs 중 하나만 설치하도록 진지하게 생각합니까? 난 정말 당신의 도움을 주셔서 감사하지만 이것은 ppl이 lib 컬렉션을 사용하는 방법이 아닙니다. – minerals

답변

0

여러 xml 라이브러리를 사용하려고 시도한 후, 나를 위해 일한 것은 xmlreader입니다.

$ sudo luarocks install lua-xmlreader

다음, XMLReader를 워드 프로세서에 따라 :

require('xmlreader') 

fhandle = io.open("temp.xml", 'r') 
data = fhandle:read("*a") 

local r = assert(xmlreader.from_string(data)) 
while (r:read()) do 
    local leadingws = (' '):rep(r:depth()) 
    if (r:node_type() == 'element') then 
    io.write(('%s%s:'):format(leadingws, r:name())) 
    while (r:move_to_next_attribute()) do 
     io.write((' %s=%q'):format(r:name(), r:value())) 
    end 
    io.write('\n') 
    end 
end 

위의 코드는 문서의 XML 구조를 출력합니다.

관련 문제