【问题标题】:Parsing XML from ftp to program将 XML 从 ftp 解析到程序
【发布时间】:2011-04-08 12:40:38
【问题描述】:

您好, 我正在尝试解析从 FTP 收到的 XML。我遵循了几个教程,但效果不佳。我的代码现在是:

              URLConnection cn;
              URL url = new URL(SERVICE_URL);
              cn = url.openConnection();
              cn.connect();
              InputStream stream = cn.getInputStream();
              DocumentBuilder docBuild = DocumentBuilderFactory.newInstance().newDocumentBuilder();
              Document trDoc = docBuild.parse(stream);

              NodeList nodes = trDoc.getElementsByTagName("Name");

现在我必须在字符串中获取名称并记录该字符串以进行测试。有人可以帮帮我吗?

编辑: 当我这样做时:

         for (int i = 0; i < nodes.getLength(); i++){

              String toe = nodes.item(i).toString();
              Log.d("toe?",""+toe);
             // Log.d("nodes:",""+nodes.item(i))
              /*
            if (nodes.item(i).getTextContent().compareTo(original) == 0){
             System.out.println(nodes.item(i).getTextContent() + " > " + newValue);
             nodes.item(i).setTextContent(newValue);
            }*/
          }

我明白了:

04-08 14:47:29.989: DEBUG/toe?(737): org.apache.harmony.xml.dom.ElementImpl@44c5d228

XML 代码是:

  <?xml version="1.0" encoding="UTF-8"?>
<Personnel>
  <Employee type="permanent">
        <Name>Seagull</Name>
        <Id>3674</Id>
        <Age>34</Age>
   </Employee>
  <Employee type="contract">
      <Name>Tom</Name>
</Personnel>

问候

【问题讨论】:

  • 你能发布一些示例 XML 吗?

标签: android xml parsing ftp


【解决方案1】:

你也可以使用 sax 解析器...可以是这样的:

SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();

URL sourceUrl = new URL(xmlURL);
xr.setContentHandler(myXMLHandler);
xr.parse(new InputSource(sourceUrl.openStream()));

现在你需要有一个 myXMLHandler 类扩展 DefaultHandler ,如下所示:

public class MyXMLHandler extends DefaultHandler 
{

    Boolean currentElement = false;
    String currentValue = null;


    @Override
    public void startElement(String uri, String localName, String qName,Attributes attributes)
    throws SAXException 
    {
        currentElement = true;               
    }

    @Override
    public void endElement(String uri, String localName, String qName)
    throws SAXException 
    {
        currentElement = false;
    }


    @Override
    public void characters(char[] ch, int start, int length)
    throws SAXException 
    {
        if (currentElement) 
        {
            currentValue = new String(ch, start, length);
            currentElement = false;
        }


    }

}

现在 StartElement() 将在此类获取任何起始元素时自动调用...字符在获取任何值时起作用....

【讨论】:

    【解决方案2】:

    查看我博客上的最新教程:p-xr.com
    它带有一个完整的源 Eclipse 项目

    希望对你有帮助!

    编辑:

    尝试改变:

    NodeList nodes = trDoc.getElementsByTagName("Name");
    

    NodeList nodes = trDoc.getElementsByTagName("Employee");
    

    【讨论】:

    • blijkbaar wilt hij XMLfunctions niet doen.. :)
    • 尝试从我的博客下载eclipse项目。我想它会对你有所帮助。您也可以随时在此处发表评论
    • 糟糕,我正在尝试编辑,所以我想我删除了你的?我在这里是菜鸟.. sry =) 你能再做一次吗? =$
    • 似乎没有让它在我的代码中运行。我应该搜索“parmanent”吗?的“名字”? “人员”?还有,你用的是httpRequest,这是为什么呢?
    • 好的,我试过你的源代码,现在它可以工作了,只有当我使用你的 xml 并将其粘贴到我的 ftp 位置 (stylefever.be/external/xmlTest.xml) 它说“geen resultaten gevonden”。我猜这是因为你使用了httpPost?如何将这个xml集成到http中?还是有其他方法可以做到这一点?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-17
    • 2012-02-12
    • 2013-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多