从Java读取XML字符串

从Java读取XML字符串,java,android,xml,xml-parsing,Java,Android,Xml,Xml Parsing,对于一些我认为很简单的事情,我很惊讶会出现这样一个奇怪的错误 在我的程序中,我有一个带有5个按钮的布局。当你按下一个按钮时,手机会启动预装号码的拨号器。我以前对此没有问题,但后来我尝试将电话号码移动到XML文件中的字符串中,并将其放入名为“phone.XML”的/res/values文件夹中。下面是我的Java文件代码的一部分: public void launchDialer(String number){ String numberToDial = "tel:"+nu

对于一些我认为很简单的事情,我很惊讶会出现这样一个奇怪的错误

在我的程序中,我有一个带有5个按钮的布局。当你按下一个按钮时,手机会启动预装号码的拨号器。我以前对此没有问题,但后来我尝试将电话号码移动到XML文件中的字符串中,并将其放入名为“phone.XML”的/res/values文件夹中。下面是我的Java文件代码的一部分:

    public void launchDialer(String number){
        String numberToDial = "tel:"+number;
        startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse(numberToDial)));
    }

    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.police_button1:
            launchDialer(Integer.toString(R.string.police1_phone));
            break;
        case R.id.police_button2:
            launchDialer("" + R.string.police2_phone);
            break;
        case R.id.police_button3:
            launchDialer("" + R.string.police3_phone);
            break;
        case R.id.police_button4:
            launchDialer("" + R.string.police4_phone);
            break;
        case R.id.police_button5:
            launchDialer("" + R.string.police5_phone);
            break;
        }
    }
这是我的phone.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="police1_phone">"555-555-5555"</string>
    <string name="police2_phone">1-800-555-5555</string>
    <string name="police3_phone">555-555-5555</string>
    <string name="police4_phone">555-555-5555</string>
    <string name="police5_phone">555-555-5555</string>
</resources>

但是,我需要从XML文件中读取它。有什么想法吗?

如果你想的话,他们已经准备好使用解析器了,比如

  • SAXXParser(我一直使用它)

  • JAVAXML:

  • 如果需要,您可以编写自己的小解析器


也许我不懂一些东西,但是
getString(R.string.policy1_phone)
必须工作。

如果你想使用
R.string.xxx
,那么你需要把你的字符串值放在
/res/values/
文件夹中一个名为
strings.xml
的文件中。

“它们都不起作用”并没有给我们多少信息。怎么搞的?你有例外吗?执行时
R.string.policy2\u phone
的值是多少?基本上这里缺少很多诊断信息……正如我提到的,我在拨号器中给了我一个随机的7位数字。它给我的号码是“213-096-8576”,这与实际号码“978-937-xxxx”相差甚远。不管我如何按照上面描述的方式编写Java/XML文件,它们都给了我随机的7位数字。世界不需要另一个Java XML parserYeah,但是如果它只是像这个case=)这样的小用途,那么编写自己的字符串就很容易了。我会的,但是我的strings文件夹中充满了其他字符串(该项目规模相对较大;该电话部分是项目的一小部分)。我希望将其放在单独的本地文件中的原因是,如果有意义的话,我最终希望从联机xml文件中解析电话号码。我不知道为什么我的任何其他尝试都不起作用,但这是有效的。谢谢!因为您使用了资源的id(在R类中生成),而不是值本身。是的,@Adinia是正确的。Id只是一个整数,您可以使用它来加载资源。Id是由资源编译器生成的,所以它们对您来说只是随机数。
launchDialer("555-555-5555");