산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 산업기술

pugixml – 네이티브 XPATH 지원으로 효율적인 XML 파싱

요약

이 문서에서는 XML 데이터를 처리하기 위해 pugixml을 사용하는 방법을 설명합니다. 이 처리 라이브러리를 사용하면 DOM 파서로 노드를 읽고 조작하고, XPATH 표기법으로 노드를 쿼리할 수 있습니다.

빌드 방법

소스를 빌드하려면 https://github.com/zeux/pugixml/tags에서 릴리스를 다운로드해야 합니다. 이제 Phoenix Contact에서 제공하는 PLCnext 툴체인으로 소스를 교차 컴파일할 수 있습니다. 다음 코드 스니펫은 교차 컴파일을 위한 cmake 스크립트를 보여줍니다.

# 필요에 따라 환경 변수 설정
cmake \
 -G "Unix Makefiles" \
 -D CMAKE_BUILD_TYPE=Release \
 -D BUILD_TESTING=OFF \
 -D BUILD_SHARED_LIBS=ON \
 -D "CMAKE_STAGING_PREFIX=${CMAKE_STAGING_PREFIX}" \
 -D "CMAKE_INSTALL_PREFIX=${CMAKE_STAGING_PREFIX}" \
 -D "CMAKE_TOOLCHAIN_FILE=${ARP_TOOLCHAIN_FILE}" \
 -D "ARP_TOOLCHAIN_ROOT= ${ARP_TOOLCHAIN_ROOT}" \
 -D BUILD_TESTS=OFF \
 -S "${SOURCE_DIRECTORY}" \
 -B "${BUILD_DIRECTORY}"
cmake --build "${BUILD_DIRECTORY}" --target install

사용 방법

먼저 C++ 헤더와 라이브러리를 프로젝트 환경에 통합해야 합니다. 완료되면 pugixml 처리를 사용할 수 있습니다.

문서 로드


pugi::xml_document doc;
pugi::xml_parse_result result = doc.load_file("data.xml");
...

주어진 노드에서 하위 노드 순회

DOM 트리를 통해 순회할 수 있으며 노드를 조작할 수도 있습니다.


pugi::xpath_node_set tools = doc.select_nodes("/Profile/Tools/Tool");
// 하위 노드 순회
for (pugi::xml_node tool: tools) {
  std::cout << " " << tool.name();
  // 속성 가져오기
  for (pugi::xml_attribute attr: tool.attributes()) {
    std::cout << " " << attr.name() << "=" << attr.value();
  }
}

XPATH 사용

XPATH는 노드와 속성에 매우 쉽게 접근할 수 있는 자유를 줍니다.


// 노드 접근
pugi::xpath_node_set tools = doc.select_nodes("/Profile/Tools/Tool");
pugi::xpath_node_set all_tools = doc.select_nodes("//Tool");
// 속성 접근
auto docIdNode = doc.select_node("@ID");
auto docIdNode_One = doc.select_node("//Tool[@ID==1]");

XML 문서 저장

XML 문서를 저장할 수 있습니다.


doc.save_file("new_data.xml");

추가 정보

pugixml에 대한 더 많은 정보에 관심이 있으시면 다음 링크를 확인하세요:

라이선스

이 라이브러리는 MIT 라이선스로 배포됩니다.

산업기술

  1. 스위치 회로: 기본 전기 회로 실용 가이드
  2. 과학적 표기법으로 곱셈과 나눗셈 마스터하기
  3. 인더스트리 4.0 인사이트: 보쉬.IO 베레나 마윤트케와의 Q&A - IoT, 자동화, 미래 공장
  4. Renesas, 내장 EtherCAT 탑재 RX72M MCU로 산업 자동화 지원
  5. C++ std::map 완전 정복: 정렬된 키-값 컨테이너 실전 가이드
  6. C언어 calloc(): 제로 초기화 메모리 할당과 실전 예제
  7. C언어 free() 함수 마스터하기: 실전 가이드와 예제
  8. 파이썬 XML 처리: 상호 운용 가능한 데이터 관리 가이드
  9. CNC 주얼리 가공 완벽 가이드
  10. Linq: 현대 C++을 위한 강력한 리스트 처리 라이브러리