as3读取xml中CDATA的方法

对于使用as3解析类似如下有CDATA的xml其实很简单,具体是要了解xml的等级关系。

 

文件名:test.xml

<data>
    <s name="bj"><![CDATA[北京]]></s>
    <s name="sh"><![CDATA[上海]]></s>
</data>

 

在上面的xml中s这一级的内容有:attrbute: name和其自己的内容(即<s></s>中间的内容)。

as3使用XML类实现读取的功能,代码如下:

 

public function Load()

{

    var request:URLRequest = new URLRequest(urlRoot + "text.xml");

    var loader:URLLoader = new URLLoader();
    loader.addEventListener(Event.COMPLETE, handle);

    loader.load(request);

}

 

public function handle(e:Event)

{

   var loader:URLLoader = URLLoader(e.target);
   var resultVar:String = loader.data;

   readXML(resultVar);

}

 

public function readXML(str:String)

{

   var xml:XML = new XML(str);

   var place:Object = new Object ();
   
   for each(var child:XML in xml["s"])
   {

       place[child.@name] = child.toString(); // 这里使用toString即可获得CDATA内容
   }

}

 

 

 

要修改XMLCDATA区域的某个节点,可以使用Java的DOM解析器和XPath表达式。 首先,使用DOM解析器将XML文件解析为DOM树。然后,使用XPath表达式选择要修改的节点。最后,使用DOM API修改该节点的值,并将DOM树写回到XML文件。 以下是一个示例代码: ```java import java.io.File; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.xpath.XPath; import javax.xml.xpath.XPathConstants; import javax.xml.xpath.XPathExpression; import javax.xml.xpath.XPathFactory; import org.w3c.dom.Document; import org.w3c.dom.Node; public class ModifyCDATANode { public static void main(String[] args) throws Exception { // Load XML file DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(new File("input.xml")); // Select CDATA node using XPath XPathFactory xPathfactory = XPathFactory.newInstance(); XPath xpath = xPathfactory.newXPath(); XPathExpression expr = xpath.compile("//myNode/text()"); Node node = (Node) expr.evaluate(doc, XPathConstants.NODE); // Modify CDATA value node.setNodeValue("new value"); // Write DOM tree back to XML file TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); transformer.setOutputProperty(OutputKeys.INDENT, "yes"); DOMSource source = new DOMSource(doc); StreamResult result = new StreamResult(new File("output.xml")); transformer.transform(source, result); } } ``` 在上面的示例,我们选择了名为“myNode”的节点,并将其值修改为“new value”。最后,我们将修改后的DOM树写回到名为“output.xml”的文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值