Unix Sed/Awk를 사용하여 XML 파일의 내용을 찾는 방법은 무엇입니까? [복사]

Unix Sed/Awk를 사용하여 XML 파일의 내용을 찾는 방법은 무엇입니까? [복사]

다음과 같은 XML 파일(MyXML.xml)이 있습니다.

<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
    <S:Body>
        <ns3:GetAllInfoFromRest xmlns:ns2="http://com.lanuk.cfe/b2_7/service/objects" xmlns:ns3="http://com.lanuk.cfe/b2_7/service/operations">
            1111,GH43567,Hamburger,GET,278598655,\n000001,                    ,Kunal,Bhyuo,Ramond,856 K. 98 Rd,                                        ,                                        ,Tripura,AGT,INDIA,856987,                    ,S,S,S,8956,\666666
        </ns3:GetAllInfoFromRest>
    </S:Body>
</S:Envelope>

이제 이 xml에서 SOAP 콘텐츠와 모든 태그 속성을 제거하고 문자열 응답만 가져와야 합니다 1111,GH43567,Hamburger,GET,278598655,\n000001, ,Kunal,Bhyuo,Ramond,856 K. 98 Rd, , ,Tripura,AGT,INDIA,856987, ,S,S,S,8956,\666666.

awk또는 을 사용하여 이 작업을 어떻게 수행할 수 있습니까 sed?

나는 이런 식으로 시도했습니다 :

$ xgawk -lxml 'XMLATTR["xmlns:ns3"]=="http://com.lanuk.cfe/b2_7/service/operations"{print $2}' MyXML.xml

하지만 분명히 내가 몇 가지 실수를 해서 작동하지 않는 것 같습니다. 누구든지 다른 솔루션을 제안할 수 있습니까?

답변1

sed/awk정말로일반적인 표현. 확인하다stackoverflow에 대한 이 답변정규식을 사용하여 HTML/XML을 구문 분석하는 것이 왜나쁜아이디어.

XML을 사용하면 문서의 DOM을 구축한 다음 정보를 찾아야 합니다. 다음과 같은 cmdline 도구가 있습니다.XML 스타XML 문서에서 정보를 얻을 수 있습니다.

하지만 sed/awk를 사용하여 XML을 구문 분석하지 마세요.

추신: 물론, 실제 생활에서 접하는 파일에 필요한 정보를 추출하기 위해 간단한 정규식을 만들 수도 있습니다. 예를 들어, 다음은 관련 정보가 포함된 문서의 다섯 번째 줄을 인쇄합니다.

# stupid and naive approach:
sed '5!d' MyXML.xml

그러나 이는 다음을 포함하는 파일의 레이아웃에 대한 가정을 만듭니다.아무것도 없다XML과 관련이 있습니다. 특정 파일에 대한 매우 특정한 생성기에서는 작동할 수 있지만 동일한 규칙을 따르는 XML 파일에서는 작동한다고 보장되지 않습니다.구조(구조화된 데이터는 XML의 모든 것입니다)

관련 정보