2009-06-08 1 views
0

xml 파일에 내 keyboad 스트로크를 기록하고 싶습니다. 속성은 키일 수 있으며 값은 타임 스탬프 또는 다른 방법 일 수 있습니다 (중요하지 않음). 지금까지 XML 스키마의 문제점

<LoggingActions> 
    <Keyboad> 
     <Entry key="a">0</Entry> 
     <Entry key="b">1213</Entry> 
     <Entry key="c">3445</Entry> 
    </Keyboad> 
</LoggingActions> 

, 이것은 내 스키마입니다 : 내가 스키마의 내 출력이 정확히 같은 것하는 방식에 스키마를 작성하려 대신

<xs:element name="MyEvents"> 
    <xs:complexType> 
    <xs:sequence> 
     <xs:element ref="LoggingActions"/> 
    </xs:sequence> 
    </xs:complexType> 
</xs:element> 

<xs:element name="KeyboardEvent"> 
    <xs:complexType> 
    <xs:sequence> 
     <xs:element ref="MyKeyEntry"/> 
     <xs:element ref="Time"/> 
    </xs:sequence> 
    </xs:complexType> 
</xs:element> 

<xs:element name="MyKeyEntry"> 
    <xs:complexType> 
    <xs:sequence> 
     <xs:element maxOccurs="unbounded" ref="keyReference"/> 
    </xs:sequence> 
    </xs:complexType> 
</xs:element> 

<xs:element name="Time"> 
    <xs:complexType> 
    <xs:sequence> 
     <xs:element maxOccurs="unbounded" ref="timeRef"/> 
    </xs:sequence> 
    </xs:complexType> 
</xs:element> 

<xs:element name="keyReference" type="xs:string"/> 
<xs:element name="timeRef" type="xs:int"/> 

,이 XML을 얻고있다 출력 :

<LoggingActionsxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
<LoggedKey> 
    <MyKeyEntry>a</MyKeyEntry> 
    <MyKeyEntry>b</MyKeyEntry> 
    <MyKeyEntry>c</MyKeyEntry> 
    </LoggedKey> 

    <Time> 
    <timeRef>0</timeRef> 
    <timeRef>1213</timeRef> 
    <timeRef>3445</timeRef> 
    </Time> 
    </LoggingActions> 

어떻게이 두 가지를 결합 할 수 있습니까?

덕분에,

답변

2

원하는 XML이 유효한 형식이 아닌, 귀하의 "항목"노트는 아마 뭔가 대신 '='A ''의 '='A '값'과 같은 몇 가지 속성을 가져야한다, 당신의 의도를 추론하기는 쉽지만.

<LoggingActions> 
    <Keyboard> 
    <Entry value="a">0</Entry> 
    <Entry value="b">1213</Entry> 
    <Entry value="c">3445</Entry> 
    </Keyboard> 
</LoggingActions> 

subsequen 스키마는 다음과 같이 보일 것이다 : 스키마에 대한

<?xml version="1.0" encoding="utf-16"?> 
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" version="1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <xsd:element name="LoggingActions" type="LoggingActionsType" /> 
    <xsd:complexType name="LoggingActionsType"> 
    <xsd:sequence> 
     <xsd:element name="Keyboard" type="KeyboardType" /> 
    </xsd:sequence> 
    </xsd:complexType> 
    <xsd:complexType name="KeyboardType"> 
    <xsd:sequence> 
     <xsd:element maxOccurs="unbounded" name="Entry" type="EntryType" /> 
    </xsd:sequence> 
    </xsd:complexType> 
    <xsd:complexType name="EntryType"> 
    <xsd:attribute name="value" type="xsd:string" /> 
    </xsd:complexType> 
</xsd:schema> 
+0

감사합니다. 이 스키마를 기반으로 개체를 생성하고 키/값을 해당 개체로 설정하려면 어떻게합니까? 그것은 할 수있다

 LoggingActionsType loggingAction = new LoggingActionsType(); loggingAction.Keyboard.  It has a SetValue method but this does not work. loggingAction.Keyboard.SetValue(keyboard.ToString(), GetTimestamp());