2011-03-01 3 views
0

요소의 특성 중 하나에 접두사를 추가하려고합니다. 그러나 구문 분석 프로그램에 제공 할 수 있으므로 추가 특성을 생성 할 때 네임 스페이스를 추가하려고 시도합니다. 프로그램은 좋아하지 않는다. 내 다른 속성에 대한 접두어를 유지하면서 추가 속성을 제거 할 수 있는지 궁금합니다.xml serializer를 사용하여 xmlns 특성 제거

감사합니다.

public class Test 
{ 
    public Test() 
    { 
     Namespaces=new XmlSerializerNamespaces(); 
     Namespaces.Add("prefix", "prefix"); 
    } 

    [XmlNamespaceDeclarations] public XmlSerializerNamespaces Namespaces; 

    [XmlAttribute(AttributeName = @"myAttribute", Namespace = @"prefix",Form = XmlSchemaForm.Qualified)] 
    public string MyAttribute { get; set; } 
} 

는 내가 얻을 것은 이것이다 :

<Test xmlns:prefix="prefix" prefix:myAttribute="Go" /> 

내가 얻을 시도하고있다 : marc_s 말한다

<Test prefix:myAttribute="Go" /> 
+4

그냥 ** ** prefix **를 사용하지 않고 ** prefix **를 먼저 사용할 수는 없습니다! –

답변

3

호로서, 당신은 자신에 접두사를 사용할 수 없습니다. 접두사의 핵심은 이미 정의한 XML 네임 스페이스를 식별하는 것입니다.

일반적으로 (필수는 아니지만) 문서는 접두사와 루트 요소의 네임 스페이스 간의 관계를 정의한 다음 접두사를 사용하여 문서 전체에서 해당 네임 스페이스를 참조합니다.

귀하의 문서 :

<?xml version="1.0" encoding="UTF-8"?> 
<Test prefix:myAttribute="Go" /> 

이 ... 당신이 말하는 것 같이 "이것은 Test 요소이며,이 속성에 의해 정의 된 네임 스페이스 myAttribute 요구했다, XML을 잘 형성되지 않는다 접두어 prefix "이지만 네임 스페이스를 어디에도 정의하지 않았습니다.

이 잘 형성 될 것이다 :

<?xml version="1.0" encoding="UTF-8"?> 
<Test xmlns:prefix="prefix" prefix:myAttribute="Go" /> 

...는 적어도 형식의 요소를 생산하고, 당신을 도움이 될 수있는 것이, 당신이 원하는 :

<?xml version="1.0" encoding="UTF-8"?> 
<SomeRootElement xmlns:prefix="prefix"> 
    <Test prefix:myAttribute="Go" /> 
</SomeRootElement> 

그러나 prefix에 대한 실제 xmlns 정의가 없으면 prefix:myAttribute은 적합하지 않습니다.

관련 문제