>

다음과 같은 XML 파일이 있습니다 :

               <record>
                    <AAA>aaa</AAA>
                    <BBB>bbb</BBB>
                    <CCC>ccc</CCC>
                </record>
                <record>
                    <AAA>ddd</AAA>
                    <BBB>eee</BBB>
                    <CCC>fff</CCC>
                </record>
                <record>
                    <AAA>ggg</AAA>
                    <BBB>hhh</BBB>
                    <CCC>iii</CCC>
                </record>

XML 파일의 모든 내용을 포함하는 하나의 문자열을 얻고 싶습니다. "aaa bbb ccc;ddd eee fff;ggg hhh iii;"

XPath 표현식으로 이것을 어떻게 구현할 수 있습니까? 아마도 "답례로"?

제발 도와주세요! 감사합니다!

  • 답변 # 1

    for 를 거의 사용할 필요가 없습니다  경로 연산자 / 때문에 노드 시퀀스를 반복하는 방법  똑같이합니다.

    그래서 쓸 수 있습니다

    string-join(record/string-join(*, ' '), ';')
    
    

  • 답변 # 2

    어떻게

    string-join((for $r in record return string-join($r/*, ' '), ''), ';')
    
    

    내부는 일련의 문자열을 생성하며, 각 문자열은 AAA 의 공백으로 구분 된 문자열 값입니다. BBB CCC  자식 요소, ''  tge 시퀀스의 끝에 빈 문자열을 추가하고 외부 string-join  그런 다음 시퀀스의 항목을 세미콜론으로 결합합니다. 여분의 빈 문자열은 뒤에 세미콜론을 제공합니다.

  • 답변 # 3

    "for return"가능성에 대한 통찰력을 제공합니다.

       for $a in //record[1], $b in //record[2], $c in //record[3]
        return concat($a,";",$b,";",$c)
    
    

    코드의 단순성을 유지하기 위해 각 문자 블록 사이에 공백을 추가 할 수 없습니다.

  • 답변 # 4

    제공 한 XML이 제대로 구성되지 않았습니다 (루트 요소가 없음). 레코드 요소가 root 내부에 제공  요소. xpath 표현식 따르기

    /root/record/*
    
    

    는 AAA, BBB, CCC, AAA, BBB, CCC, AAA, BBB, CCC 요소를 선택합니다. 그런 다음 결과를 반복하는 것은 사용자의 책임입니다. 사용하는 언어에 따라 다르므로 예를 들어 드릴 수 없습니다.

관련 자료

  • 이전 python 3.x - QGraphicsView에서 마우스 포인터 비활성화
  • 다음 c - 연결된 목록의 순서를 바꾸려면 어떻게해야합니까?