首先创建XML文本并添加节点及属性值。然后用下面语句格式化XML文本并赋给Memo.  
    Memo1.Lines.Text:=FormatXMLData(XMLDocument2.XML.Text));
问:1.当为XML文本节点加中文值时,XML文本对应值会乱码(即XML加中文节点值会乱码).
  2.FormatXMLData(XMLDocument2.XML.Text))会出错,提示Requird white space was missing.
请问如何解决?

解决方案 »

  1.   

    为XML节点属性赋中文值会乱码问题?请各位帮帮忙啊!
      

  2.   

    没有这样的事啊;
    如:
          vXMLAtt[vIndex] := aXMLDoc.createAttribute(NodeAttName[vIndex]);
          vXMLAtt[vIndex].nodevalue := NodeAttvalue[vIndex];
          vXMLNode.attributes.setNamedItem(vXMLAtt[vIndex]);
      

  3.   

    to  ExploiterSoft(匆匆):差不多是这样加属性值的,如下:
    procedure AddAttr(iNode:IDOMNode;Name,value:widestring);
    var iAttr:IDOMNode;
    begin
       iAttr:=iNode.ownerDocument.createAttribute(name);
       iAttr.nodeValue:=Value;
       iNode.attributes.setNamedItem(iAttr);
    end;
      

  4.   

    对啊,怎么会是乱码呢?你看一看你用的XML解析器是多少?XML的版本相差造成的区别相当大
      

  5.   

    现在问题是:如属性值是英文或数字则XMLDocument2.XML.Text能正常显示且运行这句 Memo1.Lines.Text:=FormatXMLData(XMLDocument2.XML.Text));不会有问题。但如果属性值有中文则
    XMLDocument2.XML.Text会有乱码且不能运行Memo1.Lines.Text:=FormatXMLData(XMLDocument2.XML.Text));
      

  6.   

    to  ExploiterSoft(匆匆) :能否说详细些,怎样查看XML解析器?
      

  7.   

    是这样的,以前给别人做程序的时候,XML操作在我的这儿好好的,可是别人拿过去就是不行,XML是自动的绑定在你的IE里的,或者你可以到DFW上去找个新的,我看你用的是DOM进行操作的,你试一试直接用TXMLDocument;其实,这种方法,你只需要将一个完整的XML手工的添加属性值之后,转到你的Demo里边试一试,看还有没有这种情况。
      

  8.   

    xmlDoc.appendChild(xmlDoc.createProcessingInstruction('xml','version="1.0" encoding="utf-8"'));
      

  9.   

    to WGYKING(【修罗】我爱北极熊!) :
    Encoding="gb2312"这是什么意思?
      

  10.   

    我倒
    你问问 ExploiterSoft(匆匆) ,其实我XML不是很懂
      

  11.   

    ExploiterSoft(匆匆) 说的多好啊!
    钦佩!!!
      

  12.   

    to WGYKING:不好意思!此方法适合我这个问题吗?如可以,能否说详细些,我该如何处理?
      

  13.   

    第一句改成
    <?xml version="1.0" encoding="GB2312"?>就是字符集的问题
      

  14.   

    字符集可以用encoding="utf-8"或encoding="utf-16"转出的文档中文部分是乱码,如用encoding="utf-32"转出的是空文档
    但改为encoding="GB2312"时编释出错,如下语句:
    xmlDoc.appendChild(xmlDoc.createProcessingInstruction('xml','version="1.0" encoding="GB2312"'));
    请问是为什么?该如何才能支持中文字符?
      

  15.   

    XMLDoc.Version := '1.0';
    XMLDoc.Encoding := 'gb2312';