2013-07-10 3 views
0

저는 조직 외부의 XML 사양을 사용하고 있습니다. 내가 사양을 준수하는 XML 파일을 생성해야합니다. 기본 네임 스페이스 xmlns="ndnqi"이 루트 요소에 첫 번째로 나열과 같이하지 않으면 파일이 제대로 검증되지 않습니다기본 XML 네임 스페이스를 먼저 나열하려면 어떻게해야합니까?

<HospYearQtr xmlns="ndnqi" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="ndnqi NDNQIV10.xsd"> 

내가 xsd.exe를 사용하여 XSD에서 클래스를 생성하고 내가 XML로 직렬화 때 기본 네임 스페이스를두고 xmlns 루트 요소의 끝에.

강제로 기본 네임 스페이스를 나열 할 수있는 방법이 있습니까?

답변

0

이상적으로는 깨진 파서를 수정하도록하십시오. 설명 된 XSD의 속성은 정렬 된 항목이 아닙니다.

콘텐츠를 생성 한 후 정규식 바꾸기와 같은 작업을 수행해야 할 수 있습니다. 아래 코드와 같은 유용한 시작점이되어야합니다.

Regex moveDefaultNamespace = new Regex(@"(<\w+)\s+(.*?)(xmlns="".+?"")\s+(.*?>)"); 
string xmlText = "<HospYearQ1tr xmlns=\"ndnqi\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"ndnqi NDNQIV10.xsd\">"; 
string reordered = moveDefaultNamespace.Replace(xmlText, "$1 $2 $3 $4"); 
관련 문제