也许是一个愚蠢的问题:我有一种List类型<Data>,我想编组成一个XML文件.这是我的班级Database包含ArrayList...
@XmlRootElement
public class Database
{
List<Data> records = new ArrayList<Data>();
public List<Data> getRecords() { return records; }
public void setRecords(List<Data> records) { this.records = records; }
}
Run Code Online (Sandbox Code Playgroud)
......这是班级数据:
// @XmlRootElement
public class Data
{
String name;
String address;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public String getAddress() { return address; }
public void setAddress(String address) { this.address = address; }
} …Run Code Online (Sandbox Code Playgroud) 我正在解决这个错误,同时解组一个字符串.我使用JAXB创建了Java文件.
JAXBContext jaxbContext = JAXBContext.newInstance(DocumentType.class);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
// Input string posted below
DocumentType dType = (DocumentType) unmarshaller.unmarshal(new StringReader("input string"));
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪:
Exception in thread "main" javax.xml.bind.UnmarshalException: unexpected element (uri:"http://ocrsdk.com/schema/recognizedBusinessCard-1.0.xsd", local:"document"). Expected elements are (none)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleEvent(UnmarshallingContext.java:647)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:243)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:238)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.Loader.reportUnexpectedChildElement(Loader.java:105)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext$DefaultRootLoader.childElement(UnmarshallingContext.java:1048)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext._startElement(UnmarshallingContext.java:483)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext.startElement(UnmarshallingContext.java:465)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.SAXConnector.startElement(SAXConnector.java:135)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:506)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:376)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(XMLNSDocumentScannerImpl.java:602)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3065)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:881)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:607)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:116)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:489)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:835)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1210)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:568)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:203)
at …Run Code Online (Sandbox Code Playgroud) 我一直无法解决为什么会出现这种错误,并且只能在运行4.4.2的三星Tab3设备上解决?它发生在我的MainActivity启动另一个Activity时,并在intent中传递一个Parcelable类,如下所示:
private void debugTest(TestParcel cfgOptions){
TestParcel cfgOptions = new TestParcel();
cfgOptions.setValue(15); //just to verify
Intent intent = new Intent(MainActivity.this, TestActivity.class);
intent.putExtra("cfgOptions", cfgOptions);
startActivityForResult(intent, DBG_TEST);
}
Run Code Online (Sandbox Code Playgroud)
TestActivity获取可分配的数据,如下所示:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test_activity);
TestParcel cfgOptions = getIntent().getExtras().getParcelable("cfgOptions");
}
Run Code Online (Sandbox Code Playgroud)
TestParcel类:
import android.os.Parcel;
import android.os.Parcelable;
public class TestParcel implements Parcelable {
private long l_ucs_value = 0;
private String s_rx_number = "";
//constructor
public TestParcel() {
l_ucs_value = 0;
s_rx_number = "";
}
public void RxNumber(String s) {
s_rx_number = s;
}
public …Run Code Online (Sandbox Code Playgroud) android unmarshalling parcel android-intent classnotfoundexception
给定一个自定义类org.example.app.MyClass implements Parcelable,我想写List<MyClass>一个包.我做了编组
List<MyClass> myclassList = ...
parcel.writeList(myclassList);
Run Code Online (Sandbox Code Playgroud)
每当我试图解散课程时
List<MyClass> myclassList = new ArrayList<MyClass>();
parcel.readList(myclassList, null);
Run Code Online (Sandbox Code Playgroud)
有一个"BadParcelableException: ClassNotFoundException when unmarshalling org.example.app.MyClass"例外.
这有什么不对?为什么找不到课程?
我想编组和解组一个实现Parcelable/来自字节数组的类.我很清楚Parcelable表示不稳定,因此不适用于实例的长期存储.但我有一个用例,我需要序列化一个对象,如果由于内部Android更改而解组失败,它不是一个showstopper.该类已经在实现该Parcelable接口.
给定一个类MyClass implements Parcelable,我如何(ab)使用Parcelable接口进行编组/解组?
我有结构
type tySurvey struct {
Id int64 `json:"id,omitempty"`
Name string `json:"name,omitempty"`
}
Run Code Online (Sandbox Code Playgroud)
我json.Marshal在HTML页面中写了JSON字节.jQuery修改name对象中的字段并使用jQueries编码对象JSON.stringify,jQuery将字符串发布到Go处理程序.
id 字段编码为字符串.
发送:{"id":1}收到:{"id":"1"}
问题是json.Unmarshal无法解组JSON,因为id它不再是整数.
json: cannot unmarshal string into Go value of type int64
Run Code Online (Sandbox Code Playgroud)
处理此类数据的最佳方法是什么?我不希望手动转换每个字段.我希望编写紧凑,无错误的代码.
行情也不算太糟糕.JavaScript与int64不兼容.
我想学习使用int64值中的字符串值解组json的简单方法.
有没有办法忽略Jaxb解析中的元素?我有一个大的XML文件,如果我可以忽略其中一个大的复杂元素,那么它可能会更快地解析.
如果甚至根本无法验证元素内容并解析文档的其余部分,即使该元素不正确,也会更好.
例如:这应该只生成Foo.element1和Foo.element2
<foo>
<element1>I want this</element1>
<element2>And this</element2>
<bar>
<a>ALL of bar should be ignored</a>
<b>this also should be ignored</b>
<c>
<x>a lot of C that take time to process</x>
</c>
<c>
<x>a lot of C that take time to process</x>
</c>
<c>
<x>a lot of C that take time to process</x>
</c>
<c>
<x>a lot of C that take time to process</x>
</c>
</bar>
</foo>
Run Code Online (Sandbox Code Playgroud) 我有两个代码,在两个不同的java项目中,做了几乎相同的事情,(根据xsd文件解组webservice的输入).
但在一种情况下我应该这样写:(输入是一个占位符名称)(元素是OMElement输入)
ClassLoader clInput = input.ObjectFactory.class.getClassLoader();
JAXBContext jc = JAXBContext.newInstance("input", clInput);
Unmarshaller unmarshaller = jc.createUnmarshaller();
Input input = (Input)unmarshaller.unmarshal( element.getXMLStreamReader() );
Run Code Online (Sandbox Code Playgroud)
在另一个lib中,我必须使用JAXBElement.getValue(),因为它是一个返回的JAXBElement,一个简单的(Input)转换只是崩溃:
Input input = (Input)unmarshaller.unmarshal( element.getXMLStreamReader() ).getValue();
Run Code Online (Sandbox Code Playgroud)
你知道是什么导致了这样的差异吗?
由于Unmarshalling异常,我正在恢复应用程序崩溃.我检查了所有Serializables都没有参数的构造函数,甚至使用ObjectStream检查了所有可序列化(保存到文件并从文件加载).我如何理解导致异常的parcelable偏移的实际类类型:
Parcel android.os.Parcel@42209460: Unmarshalling unknown type code
2131165303 at offset 3748
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2080)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2105)
at android.app.ActivityThread.access$600(ActivityThread.java:136)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1201)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4876)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:804)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:571)
at com.kdgdev.xtension.core.XtensionMain.main(XtensionMain.java:91)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.RuntimeException: Parcel android.os.Parcel@42209460: Unmarshalling unknown type code 2131165303
at offset 3748
at android.os.Parcel.readValue(Parcel.java:2032)
at android.os.Parcel.readSparseArrayInternal(Parcel.java:2255)
at android.os.Parcel.readSparseArray(Parcel.java:1687)
at android.os.Parcel.readValue(Parcel.java:2022)
at android.os.Parcel.readMapInternal(Parcel.java:2226)
at android.os.Bundle.unparcel(Bundle.java:223)
at android.os.Bundle.getSparseParcelableArray(Bundle.java:1232)
at com.android.internal.policy.impl.PhoneWindow.restoreHierarchyState(PhoneWindow.java:1690)
at android.app.Activity.onRestoreInstanceState(Activity.java:999)
at com.actionbarsherlock.app.SherlockFragmentActivity.onRestoreInstanceState(Unknown
Source)
at name.myname.android.app.ui.MainActivity.onRestoreInstanceState(Unknown
Source)
at android.app.Activity.performRestoreInstanceState(Activity.java:971)
at android.app.Instrumentation.callActivityOnRestoreInstanceState(Instrumentation.java:1130) …Run Code Online (Sandbox Code Playgroud) 我想整理进出x-www-form-urlencoding,类似于你如何使用json或xml.是否有现成的软件包可以执行此操作,或者是否有任何文档如何在不存在的情况下自行实现?
unmarshalling ×10
marshalling ×5
android ×4
jaxb ×4
java ×3
parcel ×3
go ×2
parcelable ×2
xml ×2
arraylist ×1
jquery ×1
json ×1
urlencode ×1