IT박스

XML 모범 사례 : 특성과 추가 요소

itboxs 2020. 10. 15. 07:38
반응형

XML 모범 사례 : 특성과 추가 요소


이 질문에 이미 답변이 있습니다.

둘의 차이점은 무엇이며 언제 각각을 사용해야합니까?

<person>
     <firstname>Joe</firstname>
     <lastname>Plumber</lastname>
</person>

<person firstname="Joe" lastname="Plumber" />

감사


요소 중심 및 속성 중심 XML이 있습니다. 예에서 첫 번째는 요소 중심이고 두 번째는 속성 중심입니다.

대부분의 경우이 두 패턴은 동일하지만 몇 가지 예외가 있습니다.

속성 중심

  • 요소 중심보다 작은 크기.
  • 대부분의 XML 파서는 사용자 데이터가 요소에 의해 제공된다고 생각하므로 상호 운용성이별로 없습니다. 속성은 요소를 설명하는 데 사용됩니다.
  • 일부 데이터 유형에 대해 널 입력 가능 값을 표시 할 방법이 없습니다. 예 : nullable int
  • 복잡한 유형을 표현할 수 없습니다.

요소 중심

  • 복합 유형은 요소 노드로만 표시 될 수 있습니다.
  • 매우 상호 운용성
  • 속성 중심보다 크기가 큽니다. (압축을 사용하면 크기를 크게 줄일 수 있습니다)
  • Nullable 데이터는 속성 xsi : nil = "true"로 표현할 수 있습니다.
  • 구문 분석기는 사용자 데이터에 대한 요소 만 검색하므로 구문 분석이 더 빠릅니다.

실용적인

XML의 크기가 정말 신경 쓰이는 경우, 가능하면 가능하면 속성을 사용하십시오. 큰 텍스트 값을 요소로 보유 할 nullable, 복잡한 유형 및 노드는 그대로 둡니다. XML 크기에 신경 쓰지 않거나 이동 중에 압축을 활성화하고 요소를 고수하십시오. 더 확장 가능합니다.

배경

DOT NET에서 XmlSerializer는 개체의 속성을 특성 또는 요소로 직렬화 할 수 있습니다. 최근 WCF 프레임 워크에서 DataContract serializer는 속성을 요소로만 직렬화 할 수 있으며 XmlSerializer보다 빠릅니다. 이유는 분명합니다. 역 직렬화하는 동안 요소에서 사용자 데이터를 검색하기 만하면됩니다.

여기 기사에서 요소 대 속성 도 설명 합니다.


나중에 <address>속성 을 추가 할 때 XML 속성으로 만들고 싶지 않을 것입니다. 이는 <address>주소, 도시, 국가 등으로 구성된 더 복잡한 요소 있기 때문입니다 .

이러한 이유로 속성이 훨씬 더 깊어 질 필요가 없다고 확신하지 않는 한 첫 번째 하위 요소 형식을 선택하는 것이 좋습니다. 첫 번째 형식은 향후 더 큰 확장 성을 허용합니다.

공간이 걱정된다면 XML을 압축하세요.


우리 회사에서는 두 번째 접근 방식을 선호합니다.

우리가 생각하는 방식은 "firstname"과 "lastname"이 "person"노드의 하위 필드아니라 "person"노드의 속성 이라는 것 입니다. 미묘한 차이입니다.

제 생각에는 두 번째 접근 방식이 더 간결하고 가독성 / 유지 보수성이 크게 향상되어 매우 중요합니다.

물론 응용 프로그램에 따라 다릅니다. 모든 시나리오를 포괄하는 포괄적 인 규칙은 없다고 생각합니다.


다음 정보는 속성과 요소의 선택을 짧은 방식으로 설명하는 데 매우 도움이됩니다.

속성 사용과 관련된 몇 가지 문제는 다음과 같습니다.

속성은 여러 값을 포함 할 수 없음 (요소 가능)
속성은 트리 구조를 포함 할 수 없음 (요소 가능)
속성은 쉽게 확장 할 수 없음 (향후 변경을 위해)

속성은 읽고 유지하기가 어렵습니다. 데이터에 요소를 사용하십시오. 데이터와 관련이없는 정보에는 속성을 사용하십시오.

출처 : http://www.w3schools.com/xml/xml_attributes.asp


속성은 순서를 구분하지 않습니다. 이것은 상황에 따라 장점 또는 단점이 될 수 있습니다.

속성은 복제 할 수 없습니다. "Joe"에 두 개의 이름이있는 경우 노드가 유일한 방법입니다.

참고 URL : https://stackoverflow.com/questions/241819/xml-best-practices-attributes-vs-additional-elements

반응형