?? testcmsxmlcontentwithvfs.java
字號:
level0Sequence = xmlcontent.getValueSequence("DeepCascade", Locale.ENGLISH);
assertEquals(1, level0Sequence.getElementCount());
}
/**
* Test adding and removing elements from an XML content.<p>
*
* @throws Exception in case something goes wrong
*/
public void testAddRemoveElements() throws Exception {
CmsObject cms = getCmsObject();
echo("Testing adding and removing elements from an XML content");
CmsXmlEntityResolver resolver = new CmsXmlEntityResolver(cms);
String content;
CmsXmlContent xmlcontent;
// unmarshal content definition
content = CmsFileUtil.readFile(
"org/opencms/xml/content/xmlcontent-definition-6.xsd",
CmsEncoder.ENCODING_UTF_8);
// store content definition in entitiy resolver
CmsXmlEntityResolver.cacheSystemId(SCHEMA_SYSTEM_ID_6, content.getBytes(CmsEncoder.ENCODING_UTF_8));
// now read the XML content
content = CmsFileUtil.readFile("org/opencms/xml/content/xmlcontent-6.xml", CmsEncoder.ENCODING_UTF_8);
xmlcontent = CmsXmlContentFactory.unmarshal(content, CmsEncoder.ENCODING_UTF_8, resolver);
CmsXmlContentValueSequence titleSequence;
titleSequence = xmlcontent.getValueSequence("Title", Locale.ENGLISH);
assertEquals("Title", titleSequence.getElementName());
assertEquals(1, titleSequence.getElementCount());
assertEquals(1, titleSequence.getMinOccurs());
assertEquals(5, titleSequence.getMaxOccurs());
assertEquals("This is just a modification test", titleSequence.getValue(0).getStringValue(cms));
CmsXmlStringValue newValue;
newValue = (CmsXmlStringValue)titleSequence.addValue(cms, 0);
assertEquals(2, titleSequence.getElementCount());
assertEquals(newValue, titleSequence.getValue(0));
newValue.setStringValue(cms, "This is another Value!");
// now re-create the XML content from the XML document
content = xmlcontent.toString();
System.out.println(content);
xmlcontent = CmsXmlContentFactory.unmarshal(content, CmsEncoder.ENCODING_UTF_8, resolver);
// ensure the document structure is as expected
titleSequence = xmlcontent.getValueSequence("Title", Locale.ENGLISH);
assertEquals("Title", titleSequence.getElementName());
assertEquals(2, titleSequence.getElementCount());
assertEquals(1, titleSequence.getMinOccurs());
assertEquals(5, titleSequence.getMaxOccurs());
assertEquals("This is another Value!", titleSequence.getValue(0).getStringValue(cms));
assertEquals("This is just a modification test", titleSequence.getValue(1).getStringValue(cms));
// add an element at the last position
newValue = (CmsXmlStringValue)titleSequence.addValue(cms, 2);
newValue.setStringValue(cms, "This is the last value.");
assertEquals(newValue, titleSequence.getValue(2));
// add another element at the 2nd position
newValue = (CmsXmlStringValue)titleSequence.addValue(cms, 1);
newValue.setStringValue(cms, "This is the 2nd value.");
assertEquals(newValue, titleSequence.getValue(1));
assertEquals(4, titleSequence.getElementCount());
// now re-create the XML content from the XML document
content = xmlcontent.toString();
System.out.println(content);
xmlcontent = CmsXmlContentFactory.unmarshal(content, CmsEncoder.ENCODING_UTF_8, resolver);
// ensure the document structure is as expected
titleSequence = xmlcontent.getValueSequence("Title", Locale.ENGLISH);
assertEquals("Title", titleSequence.getElementName());
assertEquals(4, titleSequence.getElementCount());
assertEquals(1, titleSequence.getMinOccurs());
assertEquals(5, titleSequence.getMaxOccurs());
assertEquals("This is another Value!", titleSequence.getValue(0).getStringValue(cms));
assertEquals("This is the 2nd value.", titleSequence.getValue(1).getStringValue(cms));
assertEquals("This is just a modification test", titleSequence.getValue(2).getStringValue(cms));
assertEquals("This is the last value.", titleSequence.getValue(3).getStringValue(cms));
// now the optional element
CmsXmlContentValueSequence optionSequence;
optionSequence = xmlcontent.getValueSequence("Option", Locale.ENGLISH);
assertEquals("Option", optionSequence.getElementName());
assertEquals(0, optionSequence.getElementCount());
assertEquals(0, optionSequence.getMinOccurs());
assertEquals(2, optionSequence.getMaxOccurs());
// add an element for the optional element
newValue = (CmsXmlStringValue)optionSequence.addValue(cms, 0);
newValue.setStringValue(cms, "Optional value 1");
assertEquals(newValue, optionSequence.getValue(0));
// add another element
newValue = (CmsXmlStringValue)optionSequence.addValue(cms, 0);
newValue.setStringValue(cms, "Optional value 0");
assertEquals(newValue, optionSequence.getValue(0));
assertEquals(2, optionSequence.getElementCount());
// now re-create the XML content from the XML document
content = xmlcontent.toString();
System.out.println(content);
xmlcontent = CmsXmlContentFactory.unmarshal(content, CmsEncoder.ENCODING_UTF_8, resolver);
optionSequence = xmlcontent.getValueSequence("Option", Locale.ENGLISH);
assertEquals("Option", optionSequence.getElementName());
assertEquals(2, optionSequence.getElementCount());
assertEquals(0, optionSequence.getMinOccurs());
assertEquals(2, optionSequence.getMaxOccurs());
assertEquals("Optional value 0", optionSequence.getValue(0).getStringValue(cms));
assertEquals("Optional value 1", optionSequence.getValue(1).getStringValue(cms));
optionSequence.removeValue(1);
assertEquals(1, optionSequence.getElementCount());
assertEquals("Optional value 0", optionSequence.getValue(0).getStringValue(cms));
optionSequence.removeValue(0);
assertEquals(0, optionSequence.getElementCount());
// now re-create the XML content from the XML document
content = xmlcontent.toString();
System.out.println(content);
xmlcontent = CmsXmlContentFactory.unmarshal(content, CmsEncoder.ENCODING_UTF_8, resolver);
titleSequence = xmlcontent.getValueSequence("Title", Locale.ENGLISH);
assertEquals(4, titleSequence.getElementCount());
titleSequence.removeValue(0);
titleSequence.removeValue(2);
assertEquals(2, titleSequence.getElementCount());
assertEquals("This is the 2nd value.", titleSequence.getValue(0).getStringValue(cms));
assertEquals("This is just a modification test", titleSequence.getValue(1).getStringValue(cms));
// now re-create the XML content from the XML document
content = xmlcontent.toString();
System.out.println(content);
}
/**
* Test adding and removing elements from an XML content, including nested elements.<p>
*
* @throws Exception in case something goes wrong
*/
public void testAddRemoveNestedElements() throws Exception {
CmsObject cms = getCmsObject();
echo("Testing adding and removing nested elements from an XML content");
CmsXmlEntityResolver resolver = new CmsXmlEntityResolver(cms);
String content;
CmsXmlContent xmlcontent;
// unmarshal content definition
content = CmsFileUtil.readFile(
"org/opencms/xml/content/xmlcontent-definition-7.xsd",
CmsEncoder.ENCODING_UTF_8);
// store content definition in entitiy resolver
CmsXmlEntityResolver.cacheSystemId(SCHEMA_SYSTEM_ID_7, content.getBytes(CmsEncoder.ENCODING_UTF_8));
// now read the XML content
content = CmsFileUtil.readFile("org/opencms/xml/content/xmlcontent-7.xml", CmsEncoder.ENCODING_UTF_8);
xmlcontent = CmsXmlContentFactory.unmarshal(content, CmsEncoder.ENCODING_UTF_8, resolver);
CmsXmlContentValueSequence nestedSequence;
nestedSequence = xmlcontent.getValueSequence("Cascade", Locale.ENGLISH);
assertEquals(1, nestedSequence.getElementCount());
I_CmsXmlContentValue newValue;
newValue = nestedSequence.addValue(cms, 0);
assertNotNull(newValue);
assertFalse(newValue.isSimpleType());
assertEquals(CmsXmlNestedContentDefinition.class.getName(), newValue.getClass().getName());
// re-create the XML content
content = xmlcontent.toString();
System.out.println(content);
xmlcontent = CmsXmlContentFactory.unmarshal(content, CmsEncoder.ENCODING_UTF_8, resolver);
// validate the XML structure
xmlcontent.validateXmlStructure(resolver);
nestedSequence = xmlcontent.getValueSequence("Cascade", Locale.ENGLISH);
assertEquals(2, nestedSequence.getElementCount());
CmsXmlContentValueSequence deepNestedSequence;
deepNestedSequence = xmlcontent.getValueSequence("DeepCascade", Locale.ENGLISH);
assertEquals(0, deepNestedSequence.getElementCount());
newValue = deepNestedSequence.addValue(cms, 0);
assertNotNull(newValue);
assertFalse(newValue.isSimpleType());
assertEquals(CmsXmlNestedContentDefinition.class.getName(), newValue.getClass().getName());
// re-create the XML content
content = xmlcontent.toString();
System.out.println(content);
xmlcontent = CmsXmlContentFactory.unmarshal(content, CmsEncoder.ENCODING_UTF_8, resolver);
// validate the XML structure
xmlcontent.validateXmlStructure(resolver);
deepNestedSequence = xmlcontent.getValueSequence("DeepCascade", Locale.ENGLISH);
assertEquals(1, deepNestedSequence.getElementCount());
nestedSequence = xmlcontent.getValueSequence("Cascade", Locale.ENGLISH);
assertEquals(2, nestedSequence.getElementCount());
nestedSequence.removeValue(1);
deepNestedSequence.removeValue(0);
// re-create the XML content
content = xmlcontent.toString();
System.out.println(content);
xmlcontent = CmsXmlContentFactory.unmarshal(content, CmsEncoder.ENCODING_UTF_8, resolver);
// validate the XML structure
xmlcontent.validateXmlStructure(resolver);
deepNestedSequence = xmlcontent.getValueSequence("DeepCascade", Locale.ENGLISH);
assertEquals(0, deepNestedSequence.getElementCount());
nestedSequence = xmlcontent.getValueSequence("Cascade", Locale.ENGLISH);
assertEquals(1, nestedSequence.getElementCount());
}
/**
* Test using a different XML content handler then the default handler.<p>
*
* @throws Exception in case something goes wrong
*/
public void testContentHandler() throws Exception {
CmsObject cms = getCmsObject();
echo("Testing individual content handler for XML content");
CmsXmlEntityResolver resolver = new CmsXmlEntityResolver(cms);
String content;
// unmarshal content definition
content = CmsFileUtil.readFile(
"org/opencms/xml/content/xmlcontent-definition-3.xsd",
CmsEncoder.ENCODING_UTF_8);
CmsXmlContentDefinition definition = CmsXmlContentDefinition.unmarshal(content, SCHEMA_SYSTEM_ID_3, resolver);
// store content definition in entitiy resolver
CmsXmlEntityResolver.cacheSystemId(SCHEMA_SYSTEM_ID_3, content.getBytes(CmsEncoder.ENCODING_UTF_8));
// now create the XML content
content = CmsFileUtil.readFile("org/opencms/xml/content/xmlcontent-3.xml", CmsEncoder.ENCODING_UTF_8);
CmsXmlContent xmlcontent = CmsXmlContentFactory.unmarshal(content, CmsEncoder.ENCODING_UTF_8, resolver);
assertTrue(xmlcontent.hasValue("Html", Locale.ENGLISH));
assertTrue(xmlcontent.hasValue("VfsLink", Locale.ENGLISH));
assertSame(definition.getContentHandler().getClass().getName(), TestXmlContentHandler.class.getName());
}
/**
* Test default values in the appinfo node using a nested XML content schema.<p>
*
* @throws Exception in case something goes wrong
*/
public void testDefaultNested() throws Exception {
CmsObject cms = getCmsObject();
echo("Testing for default values in nested XML content schemas");
CmsXmlEntityResolver resolver = new CmsXmlEntityResolver(cms);
String content;
// unmarshal content definition
content = CmsFileUtil.readFile(
"org/opencms/xml/content/xmlcontent-definition-4.xsd",
CmsEncoder.ENCODING_UTF_8);
// store content definition in entitiy resolver
CmsXmlEntityResolver.cacheSystemId(SCHEMA_SYSTEM_ID_4, content.getBytes(CmsEncoder.ENCODING_UTF_8));
// now create the XML content
content = CmsFileUtil.readFile("org/opencms/xml/content/xmlcontent-4.xml", CmsEncoder.ENCODING_UTF_8);
CmsXmlContent xmlcontent = CmsXmlContentFactory.unmarshal(content, CmsEncoder.ENCODING_UTF_8, resolver);
System.out.println(xmlcontent.toString());
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -