문제

브라우저에 전달되는 XML 문자열을 생성하기 위해 Java 백엔드를 사용하고 있습니다.현재 나는 이 XML을 생성하기 위해 간단한 문자열 조작을 사용하고 있습니다.XML 문자열을 생성하려면 Java에서 일부 XML 라이브러리를 사용해야 합니까?필요한 것보다 라이브러리를 사용하기가 매우 어렵다는 것을 알았습니다.

도움이 되었습니까?

해결책

필수는 아니지만 권장됩니다.그러나 문자열 조작이 효과가 있다면 그렇게 하십시오!작거나 간단한 XML 텍스트를 직접 안전하게 작성할 수 있는 경우가 많이 있습니다.

XML 텍스트를 만드는 것이 보기보다 어렵다는 점을 알아두세요.제가 고려할 몇 가지 기준은 다음과 같습니다.

  • 첫 번째:얼마나 많이 제어 XML에 들어가는 정보를 가지고 있나요?

원본 데이터에 대한 통제력이 낮을수록 문제가 발생할 가능성이 높아지고 라이브러리가 더 유리해집니다.예를 들어:(a) 당신은 할 수 있습니까? 보장하다 요소 이름에는 이름에 불법적인 문자가 포함되지 않는다는 점을 알고 계십니까?(b) 속성 내용에 따옴표를 붙이는 것은 어떻습니까?그런 일이 일어날 수 있나요? 당신은 그런 일을 처리하고 있나요?(c) 데이터에 인코딩되어야 할 내용이 포함되어 있습니까? 실재 (종종 다음과 같이 출력되어야 하는 less-than과 같습니다. <);제대로 하고 있어?

  • 둘째, 유지 관리성:이해하기 쉬운 XML을 작성하는 코드입니다. 다른 사람에 의해?

아마도 평생 동안 코드에 갇혀 있고 싶지 않을 것입니다.저는 XML을 직접 작성하는 중고 C++ 코드로 작업했는데 놀라울 정도로 모호할 수 있습니다.물론 이것이 귀하의 개인 프로젝트라면 "다른 사람"에 대해 걱정할 필요가 없습니다.위의 "기타"를 "1년 후"로 대체하세요.

나는 성능에 대해 걱정하지 않을 것입니다.XML이 직접 작성할 수 있을 만큼 단순하다면 라이브러리의 오버헤드는 아마도 의미가 없을 것입니다.물론 귀하의 경우는 다를 수 있지만 먼저 이를 입증하기 위해 측정해야 합니다.

마지막으로 그렇습니다.충분히 간단하다면 XML 텍스트를 직접 작성할 수 있습니다.하지만 사용 가능한 라이브러리를 모르는 것은 아마 올바른 이유는 아닙니다.

최신 XML 라이브러리는 매우 강력한 도구이지만 어려울 수도 있습니다.그러나 XML 라이브러리의 필수 사항을 배우는 것은 그리 어렵지 않으며 매우 편리할 수 있습니다.무엇보다도 이는 오늘날의 취업 시장에서 거의 필수 요소입니다.필수 요소를 얻을 때까지 네임스페이스, 스키마 및 기타 고급 기능으로 인해 어려움을 겪지 마세요.

행운을 빌어요.

다른 팁

Xml은 어렵습니다.자신을 파싱하는 것은 나쁜 생각이며 콘텐츠를 직접 생성하는 것은 더 나쁜 생각입니다.Xml 1.1 사양을 살펴보세요.

적절한 인코딩, 속성 인코딩 (예 : 유효하지 않은 xml 생성), 적절한 CDATA 이스케이프, UTF 인코딩, 사용자 정의 DTD 엔티티 등을 처리해야하며 기본 / 빈 네임 스페이스가있는 혼합 xml 네임 스페이스를 던지지 않습니다., 네임 스페이스 속성 등

툴킷에 대해 알아보세요. 사용할 수있는 것이 많습니다.

사용자 지정 문자열 조작은 괜찮다고 생각하지만 다음 두 가지를 염두에 두어야합니다.

  1. 코드가 라이브러리만큼 성숙하지 않습니다.팝업되는 버그를 처리 할 계획에 시간을 할당하십시오.
  2. xml이 성장하기 시작할 때 (성능 및 사용 편의성 측면에서) 타사 라이브러리만큼 접근 방식이 확장되지 않을 수 있습니다.

    xml 출력 (및 입력을위한 타사 라이브러리)에 사용자 지정 문자열 조작을 사용하는 코드 기반을 알고 있습니다.처음에는 괜찮 았지만 잠시 후 정말 번거로 웠습니다.

예, 도서관을 사용합니다.

누군가는 일반적으로 생각할 수있는 것보다 더 나은 것을 만들기 위해 시간과 노력을 들였습니다.문자열 조작은 단일 노드를 다시 보내는 것이지만 일단 DOM을 조작하거나 XPath 쿼리를 사용하기 시작하면 라이브러리가 사용자를 저장합니다.

라이브러리를 사용하지 않으면 조만간 발생 할 잘못된 형식의 데이터를 생성하거나 파싱 할 위험이 있습니다.XHTML에서 document.write가 허용되지 않는 것과 같은 이유로 XML 마크 업을 문자열로 작성해서는 안됩니다.

필수 도구를 건너 뛰는 것은 의미가 없습니다. xml을 작성하는 것조차도 네임 스페이스 바인딩 (필요한 경우)은 말할 것도없고 이러한 앰퍼샌드와 lt를 이스케이프해야하므로 사소하지 않습니다. 그리고 결국 libs는 일반적으로 xml을보다 안정적이고 효율적으로 읽고 쓸 수 있습니다 (특히 Java의 경우).

하지만 지나치게 복잡해 보이면 잘못된 도구를 찾고 있었을 수 있습니다.JAXB 또는 XStream을 사용한 데이터 바인딩은 간단합니다.하지만 간단하고 직접적인 XML 출력을 위해 StaxMate 를 사용합니다.실제로 여러 가지 방법으로 작업을 단순화 할 수 있습니다 (자동으로 시작 태그를 닫고 필요한 경우 네임 스페이스 선언 작성 등).

아니요-직접 구문 분석 할 수 있고 필요에 따라 확장 할 수 있다면 라이브러리가 필요하지 않습니다.

미래의 요구 사항이 충족되는지 확인하십시오. 복잡한 xml 생성은 라이브러리를 사용하여 더 잘 수행 할 수 있습니다. 일부는 매우 간단한 방식으로 제공됩니다.

프로덕션 코드에서 이와 같은 작업을 수행 한 유일한 때는 동료와 전처리기를 구축하여 다른 파일의 XML 조각을 더 큰 XML에 포함 할 수있었습니다.로드시 먼저 이러한 임베드 (XML 주석 문자열의 파일 참조)를 구문 분석하고 참조한 실제 조각으로 대체합니다.그런 다음 결합 된 결과를 XML 파서에 전달합니다.

XML을 구문 분석하기 위해 라이브러리를 사용할 필요는 없지만이 질문을 확인하세요.
바퀴를 재발 명하기 전에 고려해야 할 사항은 무엇입니까?
xml 구문 분석 / 생성을위한 코드 작성을 시작하기 전에

아니요-특히 생성을 위해 (입력 텍스트가 항상 당신을 놀라게 할 수 있기 때문에 나는 파싱하는 경향이 적습니다).괜찮다고 생각합니다.하지만 자신의 코드를 유지하는 데 몇 분 이상을 소비한다면 라이브러리로 이동할 준비를하십시오.

JDK와 함께 제공되는 DOM XML API를 사용하는 것은 어렵다고 생각하지 않습니다. Element 노드, 속성 등을 쉽게 만들 수 있으며 나중에 문자열을 DOM 문서로 쉽게 변환 할 수 있습니다.문자열

Google이 스페인에서 찾은 첫 페이지 ( 스페인어 XML 예 )) : 라코 디스

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top