0

我有一个 FLEX 应用程序,它当前正在接收下面的 XML。我需要通过摆脱不需要的节点来清理它,但保留他们的孩子。我尝试了各种删除组合,但我最终也总是删除孩子。

我得到了什么:

<cmisObject folder="true" name="documentLibrary">
  <children>
    <cmisObject folder="true" name="Test Folder">
      <children>
        <cmisObject folder="false" name="Test Word Doc.doc">
          <children/>
        </cmisObject>
        <cmisObject folder="false" name="Test Excel.xls">
          <children/>
        </cmisObject>
        <cmisObject folder="true" name="Test SubFolder">
          <children>
            <cmisObject folder="false" name="TestSubFolderDoc.doc">
              <children/>
            </cmisObject>
          </children>
        </cmisObject>
      </children>
    </cmisObject>
    <cmisObject folder="false" name="TestMainDoc.doc">
      <children/>
    </cmisObject>
  </children>
</cmisObject>

我想将其更改为:

<cmisObject folder="true" name="documentLibrary">
    <cmisObject folder="true" name="Test Folder">
        <cmisObject folder="false" name="Test Word Doc.doc">
        </cmisObject>
        <cmisObject folder="false" name="Test Excel.xls">
        </cmisObject>
        <cmisObject folder="true" name="Test SubFolder">
            <cmisObject folder="false" name="TestSubFolderDoc.doc">
            </cmisObject>
        </cmisObject>
    </cmisObject>
    <cmisObject folder="false" name="TestMainDoc.doc">
    </cmisObject>
</cmisObject>

对此有什么想法吗?

4

1 回答 1

1

嗨下面的代码可以帮助你: -

我尝试了一些解决方法来实现您正在寻找的东西:-

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
        <fx:XML id="sampleXML" format="e4x" >
            <cmisObject folder="true" name="documentLibrary">
                <children>
                    <cmisObject folder="true" name="Test Folder">
                        <children>
                            <cmisObject folder="false" name="Test Word Doc.doc">
                                <children/>
                            </cmisObject>
                            <cmisObject folder="false" name="Test Excel.xls">
                                <children/>
                            </cmisObject>
                            <cmisObject folder="true" name="Test SubFolder">
                                <children>
                                    <cmisObject folder="false" name="TestSubFolderDoc.doc">
                                        <children/>
                                    </cmisObject>
                                </children>
                            </cmisObject>
                        </children>
                    </cmisObject>
                    <cmisObject folder="false" name="TestMainDoc.doc">
                        <children/>
                    </cmisObject>
                </children>
            </cmisObject>
        </fx:XML>
    </fx:Declarations>

    <fx:Script>
        <![CDATA[

            private function parseHandler():void
            {
                var newXMLString:String = removeElements(String(sampleXML));
                var responseXML:XML = new XML(newXMLString);
                trace(responseXML)
            }

            private function removeElements(inputXml:String):String
            {
                inputXml = inputXml.split('<children>').join('');
                inputXml = inputXml.split('</children>').join('');
                inputXml = inputXml.split('<children/>').join('');
                return inputXml;
            }

        ]]>
    </fx:Script>

    <s:Button id="btnID" label="Parse XML" click="parseHandler()"/>

</s:Application>

输出: -

<cmisObject folder="true" name="documentLibrary">
  <cmisObject folder="true" name="Test Folder">
    <cmisObject folder="false" name="Test Word Doc.doc"/>
    <cmisObject folder="false" name="Test Excel.xls"/>
    <cmisObject folder="true" name="Test SubFolder">
      <cmisObject folder="false" name="TestSubFolderDoc.doc"/>
    </cmisObject>
  </cmisObject>
  <cmisObject folder="false" name="TestMainDoc.doc"/>
</cmisObject>
于 2012-08-17T08:41:35.627 回答