2016-09-22 3 views
1

xml의 serialize 된 객체가 있고 xsi : noNamespaceSchemaLocation을 루트 요소에 추가하고 xmlwriter를 사용하고 싶습니다.xmlwirter를 사용하여 xml의 루트 요소에 noNamespaceSchemaLocation을 추가하는 방법

내 XML을 아래 예제와 같이하고 싶습니다. 는 fileWriter 객체를 작성 후 최종 XML의 다른 루트 요소를 만들 수 있기 때문에

<?xml version="1.0" encoding="utf-8"?> 
 
<root xsi:noNamespaceSchemaLocation="abc.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
 
    <child>false</child> 
 
</root>

WriteStartElement 나를 위해 작동하지 않습니다.

fileWriter.WriteStartElement ("root");
fileWriter.WriteAttributeString ("xsi", "noNamespaceSchemaLocation", null, "abc.xsd");

는 내 XSD 대해 생성 xsd.exe 부분 클래스 확장 내 클래스에서 하나 명 이상의 멤버를 추가 지금

[XmlAttribute(AttributeName="noNamespaceSchemaLocation",Namespace="http://www.w3.org/2001/XMLSchema-instance")] 
 
public string noNamespaceSchemaLocation = "abc.xsd";

출력 불렀어

<?xml version="1.0" encoding="utf-8"?> 
 
<root p1:noNamespaceSchemaLocation="abc.xsd" xmlns:p1="http://www.w3.org/2001/XMLSchema-instance"> 
 
    <child>false</child> 
 
</root>

p1 대신 xsi를 사용하고 싶습니다. XmlAttribute의 유효하지 않은 속성 때문일 수 있지만 무엇을 알아 내지 못했습니다.

xml serialization을 사용하려는 XMLDocuments로 작업하는 것은 옵션이 아닙니다.

도움이 될 것입니다.

답변

0

빈 네임 스페이스 때문에 p1 접두사가 추가되었습니다. 그것은 내가 xml에서 기본 네임 스페이스를 제거하고 xsi 접두어가 부분 클래스를 작성할 때 추가 될 때 작동했습니다.