Go의 XML 데이터 탐색
문제:
XML 데이터는 종종 문제를 야기합니다. XPath에 대한 사전 지식 없이 특정 요소에 액세스하게 됩니다. 이와 관련하여 xml.Unmarshal 메서드에는 사용자가 데이터를 얻기 위해 정확한 경로를 지정해야 한다는 제한이 있습니다.
해결책:
XML 데이터를 유연하게 탐색하려면 다음을 수행할 수 있습니다. 간단한 걷기 기능과 함께 재귀 데이터 구조를 활용합니다.
재귀 데이터 구조:
type Node struct { XMLName xml.Name Content []byte `xml:",innerxml"` Nodes []Node `xml:",any"` }
이 구조에서 각 노드는 해당 이름, 내부 XML 콘텐츠(중첩되지 않은 요소의 경우) 및 하위 노드 조각을 포함하는 XML 문서의 요소를 나타냅니다.
걷기 함수:
func walk(nodes []Node, f func(Node) bool) { for _, n := range nodes { if f(n) { walk(n.Nodes, f) } } }
재귀적으로 걷기 함수 노드 트리를 순회하며, 발견된 각 노드에 대해 제공된 함수 f를 호출합니다.
사용법:
XML 문서를 순회하고 그에 따라 해당 요소를 처리하려면:
예:
다음 코드는 질문의 XML 문서를 순회하여 요소 이름을 주문:
content := Node{} if err := xml.Unmarshal([]byte(rawXML), &content); err != nil { // Handle error } walk(content.Nodes, func(n Node) bool { fmt.Println(n.XMLName.Local) return true })
출력:
content p animal p dog p birds p p animal p
위 내용은 XPath를 사용하지 않고 Go에서 XML 데이터를 효율적으로 탐색하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!