读书人

C# XML输出 属性名带前缀的有关问题

发布时间: 2013-04-21 21:18:07 作者: rapoo

C# XML输出 属性名带前缀的问题
本帖最后由 TaiJi1985 于 2013-03-14 10:43:20 编辑 任务: 要自动的向AndroidManifest.xml中加一个权限声明
原xml文件:


<?xml version="1.0" encoding="utf-8"?>
<manifest android:versionCode="96" android:versionName="0.96" package="org.aa.bb"
xmlns:android="http://schemas.android.com/apk/res/android">
<application android:label="@string/app_name" android:icon="@drawable/icon">
<meta-data android:name="com.a0soft.gphone.aTrackDog.webURL" android:value="http://code.google.com/p/get-a-robot-vpnc/" />
<meta-data android:name="com.a0soft.gphone.aTrackDog.dlURL" android:value="http://code.google.com/p/get-a-robot-vpnc/downloads/list?can=3" />
<activity android:label="@string/add_network" android:name=".cc" />
<activity android:label="@string/backend_file_manager" android:name=".BackendFileManager" />
<activity android:label="@string/app_name" android:name=".dd" android:launchMode="singleTask" android:configChanges="keyboardHidden|orientation">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:label="VPNC" android:name="MonitorServiceImpl">
<intent-filter>
<action android:name="org.codeandroid.vpnc_frontend.MonitorServiceImpl" />
</intent-filter>
</service>
</application>
<uses-permission android:name="android.permission.VIBRATE" />
</manifest>


想在上面加一个uses-permission 的一行:
  <uses-permission android:name="android.permission.READ_PHONE_STATE" />


自己写的代码:

desc_x.Load(@"E:\aa\AndroidManifest.xml");
XmlNode dn = desc_x.SelectSingleNode("/manifest");
XmlElement xn = desc_x.CreateElement("uses-permission");
XmlAttribute a = desc_x.CreateAttribute("android", "name", xn.NamespaceURI);
a.Value = "android.permission.READ_PHONE_STATE";
xn.Attributes.Append(a);
dn.AppendChild(xn);
string outfile = @"E:\aa\AndroidManifest2.xml";
desc_x.Save(outfile);



输出结果中, 属性name没有带有“android:"的前缀。 不知如何让他输出带有"android:"的属性名。


<?xml version="1.0" encoding="utf-8"?>
<manifest android:versionCode="96" android:versionName="0.96" package="org.codeandroid.vpnc_frontend" xmlns:android="http://schemas.android.com/apk/res/android">


<application android:label="@string/app_name" android:icon="@drawable/icon">
<meta-data android:name="com.a0soft.gphone.aTrackDog.webURL" android:value="http://code.google.com/p/get-a-robot-vpnc/" />
<meta-data android:name="com.a0soft.gphone.aTrackDog.dlURL" android:value="http://code.google.com/p/get-a-robot-vpnc/downloads/list?can=3" />
<activity android:label="@string/add_network" android:name=".EditNetwork" />
<activity android:label="@string/backend_file_manager" android:name=".BackendFileManager" />
<activity android:label="@string/app_name" android:name=".VPNC" android:launchMode="singleTask" android:configChanges="keyboardHidden|orientation">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:label="VPNC" android:name="MonitorServiceImpl">
<intent-filter>
<action android:name="org.codeandroid.vpnc_frontend.MonitorServiceImpl" />
</intent-filter>
</service>
</application>
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission name="android.permission.READ_PHONE_STATE" /><!-- 这里 -->
</manifest>


[解决办法]
直接吧desc_x.CreateAttribute("android", "name", xn.NamespaceURI);里面的xn.NamespaceURI换成"android"即可。

读书人网 >XML SOAP

热点推荐