code

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

starcafe 2023. 10. 10. 20:45
반응형

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

이 둘의 차이점과 각각의 사용 시기는 어떻게 됩니까?

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

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

감사해요.

요소 중심 XML과 속성 중심 XML이 있는데, 예를 들어 첫 번째 것은 요소 중심이고 두 번째 것은 속성 중심입니다.

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

속성 중심

  • 요소 중심보다 작은 크기.
  • 대부분의 XML 구문 분석기는 사용자 데이터가 요소에 의해 표시된다고 생각하므로 요소를 설명하는 데 속성이 사용됩니다.
  • 일부 데이터 유형(예: nullable int)에 대해 nullable 값을 표시할 방법이 없습니다.
  • 복합 형식을 표현할 수 없습니다.

요소 중심

  • 복합형은 요소 노드로만 제시할 수 있습니다.
  • 상호 운용성이 매우 뛰어남
  • 속성 중심보다 큰 사이즈. (압축을 사용하여 크기를 크게 줄일 수 있습니다.)
  • nullable data는 속성 xsi로 표현할 수 있습니다. nil="true"
  • 파서가 사용자 데이터에 대한 요소만 검색하므로 파싱 속도가 빠릅니다.

실용적인.

XML 크기에 관심이 있는 경우 적절한 경우 언제든지 속성을 사용합니다.nullable, complex type 또는 큰 텍스트 값을 보유할 요소가 필요한 경우 요소를 사용합니다.XML 크기에 상관이 없거나 전송 중에 압축을 사용하도록 설정한 경우에는 확장이 더 용이하므로 요소를 계속 사용합니다.

배경

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

요소 vs 속성에 대해서도 설명하는 기사입니다.

미래에 당신이 추가할 때.<address>property, XML 속성으로 만들고 싶지 않을 것입니다.왜냐하면.<address>도로 주소, 도시, 국가 등으로 구성된 더 복잡한 요소일 수도 있습니다.

이러한 이유로 속성이 더 깊이 들어갈 필요가 없다는 확신이 들지 않는 한 첫 번째 하위 요소 양식을 선택할 수 있습니다.첫 번째 형태는 미래에 더 큰 확장성을 허용합니다.

공간이 조금이라도 걱정된다면 XML을 압축합니다.

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

우리가 생각하는 방식은 "first name"과 "last name"이 "사람" 노드의 하위 필드가 아니라 "사람" 노드의 속성이라는 것입니다.미묘한 차이입니다.

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

물론 응용 프로그램에 따라 다를 수 있습니다.모든 시나리오를 포괄하는 포괄적인 규정이 있는 것은 아니라고 생각합니다.

나는 다음의 정보가 속성과 요소의 선택을 짧게 설명하는 데 매우 도움이 된다는 것을 알았습니다.

속성을 사용할 때 발생하는 몇 가지 문제는 다음과 같습니다.

특성은 여러 값을 포함할 수 없습니다(elements는 포함할 수 있음).
특성에는 트리 구조를 포함할 수 없음(elements 캔)
속성을 쉽게 확장할 수 없음(향후 변경 시)

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

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

속성은 순서에 민감하지 않습니다.이것은 상황에 따라 장점일 수도 있고 단점일 수도 있습니다.

속성은 중복할 수 없습니다.만약 "조"가 두 개의 이름을 가지고 있다면, 노드만이 갈 수 있는 유일한 방법입니다.

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

반응형