Tag: xml

基于动态正则表达式的XPath搜索

我有一个类似下面的XML: AMA* AMAZON EBAY * 我想查询并找出与提供的输入匹配的所有设计。 如果我指定EBAY我希望xpath返回节点名称= DEST3和DEST4(它不关心值)但是如果我指定AMAZON它需要返回DEST1,DEST2和DEST4作为AMA *在DEST1中支持通配符。 到目前为止,我的XPath看起来像这样: /目的地[(From =” ‘或From =’*’))] / @ name 如果指定了input,则动态创建XPATH表达式并将传入值插入 领域 除了From之外,我的XML中还有其他元素。 感谢是否有人可以指出这一点。 谢谢,Manglu

片段项不会崩溃

我试图在片段中切换我的1个形状的可见性但是每当我单击SwitchPreferenceCompat控件并返回到我加载的片段时它都不起作用。 在我运行应用程序之前和期间都没有出现任何错误或警告。 这是我的代码: fragment_blueshapes.xml SettingsActivity.java public class SettingsActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); PreferencesFragment newFragment = new PreferencesFragment(); FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); transaction.replace(R.id.master_container, newFragment); transaction.commit(); } } PreferencesFragment.java public class PreferencesFragment extends PreferenceFragmentCompat { /** * {@inheritDoc} */ @Override public void onCreatePreferences(Bundle bundle, String s) { addPreferencesFromResource(R.xml.app_preferences); } } […]

如何在编写XML文件时忽略DTDvalidation但保留Doctype?

我正在研究一个系统,该系统应该能够读取任何(或至少是任何格式良好的)XML文件,操作一些节点并将它们写回到同一个文件中。 我希望我的代码尽可能通用,我不想要 在我的代码中的任何位置对模式/ Doctype信息进行硬编码引用。 doctype信息位于源文档中,我想保留该doctype信息,而不是在我的代码中再次提供。 如果文档没有DocType,我不会添加一个。 除了我的几个节点之外,我根本不关心这些文件的forms或内容。 自定义EntityResolvers或StreamFilters以省略或以其他方式操纵源信息(已经遗憾的是,命名空间信息似乎无法从声明它的文档文件中访问,但我可以使用uglier XPath进行管理) DTDvalidation。 我没有引用的DTD,我不想包含它们,并且在不知道它们的情况下完全可以进行节点操作。 目的是使源文件完全不变,除了通过XPath检索的已更改的节点。 我想逃避标准的javax.xml。 我到目前为止的进展: DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setAttribute(“http://xml.org/sax/features/namespaces”, true); factory.setAttribute(“http://xml.org/sax/features/validation”, false); factory.setAttribute(“http://apache.org/xml/features/nonvalidating/load-dtd-grammar”, false); factory.setAttribute(“http://apache.org/xml/features/nonvalidating/load-external-dtd”, false); factory.setNamespaceAware(true); factory.setIgnoringElementContentWhitespace(false); factory.setIgnoringComments(false); factory.setValidating(false); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse(new InputSource(inStream)); 这会成功将XML源加载到org.w3c.dom.Document中,忽略DTDvalidation。 我可以做我的替换然后我用 Source source = new DOMSource(document); Result result = new StreamResult(getOutputStream(getPath())); // Write the DOM […]

使用STaX解析多个XML片段

我希望以下内容可以在StAX中解析, 但是当你到达第二个元素时它会窒息。 因为没有共同的根元素。 (我不太清楚为什么拉解析器会关心这个特殊问题…无论如何…) 我可以伪造根元素,例如番石榴: InputSupplier join = CharStreams.join( newReaderSupplier(“”), newReaderSupplier(new File(“…”)), newReaderSupplier(“”)); XMLInputFactory xif = XMLInputFactory.newInstance(); XMLStreamReader xsr = xif.createXMLStreamReader(join.getInput()); xsr.nextTag(); // Skip the fake root 所以我的问题是:有没有办法避免这种黑客行为? 一些’片段’模式,我可以把解析器放入?

动态xml进入mongoDB

我目前正在开发一个应用程序(Java),并且可以找到解决我的问题的最佳方法。 我需要在mongoDB中存储数据(当bson格式支持时使用实际数据类型),我获取xml文件中的数据,以及他的模式(两者都是在运行时动态创建的,所以我不知道它里面有什么)。 更具体地说,我没有关于字段,数据名称的任何信息。 用户可以动态地创建新的“对象”(应用程序中没有java类)。 当用户创建一个新对象时,我会收到一个描述该对象的xml架构。 因此,当用户尝试添加此类型的对象(数据为新实体的xml格式)时,我使用xml架构validation它,现在我需要将对象存储在mogoDB中。 所以我需要能够在bson(或使用mongo java驱动程序的基本java对象)中转换我的xml并在查询后转换回xml。 例: 如果用户想要管理人员,他将定义人员架构: … … … … 在这里,我得到了xsd(一个有效的xsd格式,包含所有信息)。 然后,当用户添加人员时,我得到的数据如下: John Smith 32 … 所以我想知道最好的方法是不是像jackson:xml – > Pojo – > bson,或者使用XSLT xml – > json / bson(带有数据类型的编码)。 或者只需手动读取xml文件和我的基本java对象。 有没有人就如何实施其中一种解决方案或更好的解决方案提出一些建议?

setContentView上的另一个资源$ NotFoundException

Stack Overflow上有很多资源$ NotFoundException问题,我已经审阅了它们,并尝试了各种建议无济于事。 我有一个完美的工作布局,显示一些图形与下面的一些按钮,我修改了一些按钮,并开始得到这个错误。 我没有看到我的更改有什么问题,但只是缩小它我删除了所有的按钮,所以现在我只有一个带有ImageView的LinearLayout,我仍然得到错误。 我的Java: try { setContentView(R.layout.graphics); } catch (Exception e) { Log.d(“DGraphActivity”, “setContentView crash”); } 我的XML: 错误说android.content.res.Resources $ NotFoundException:资源ID#0x7f030005 。 在R.java文件中,资源用图形标识。 。 。 public static final class layout { public static final int addcomment=0x7f030000; public static final int areyousure=0x7f030001; public static final int downarrow=0x7f030002; public static final int downleftarrow=0x7f030003; public static final […]

SwitchPreference默认颜色

我正在处理的应用程序我已将主要/暗/重点颜色设置为我想要的颜色,并且它们出现在正确的位置(如预期的那样)。 我有一个我正在使用的偏好活动,我希望我使用的preferenceswitch开关的颜色会以强调颜色呈现。 相反,它们呈现材料蓝绿色。 我想知道这是Lollipop的默认行为,就像Kitkat那样是蓝色的吗? 我甚至没有在我的代码或colors.xml / styles.xml引用#009688的颜色。 colors.xml #00BCD4 #0097A7 #FFD740 styles.xml @color/primary @color/primary_dark @color/accent 有任何想法吗? 我会提供更多信息。 我在这里看到了一些关于创建自定义内容的东西,但这真的有必要吗? preferenceActivity.java public class PreferenceActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); PrefFrag prefFragment = new PrefFrag(); FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); fragmentTransaction.replace(android.R.id.content, prefFragment); fragmentTransaction.commit(); } }

以递归方式从XML中删除空节点

我想从XML元素中删除空节点。 这个xml是从供应商生成的,我没有xml生成的控制权。 但由于XML几乎没有空节点,我需要递归删除这些空节点。 这个xml来自OMElement,我使用[XMLUtils] [1] Sample XML从这个对象中获取一个Element something something something else 由于D21是一个空节点,我想删除D21,因为现在D2是一个空节点,我想删除D2,但由于D有D1,我不想删除D. 同样,我有可能得到 现在,因为C是空的,我想删除C然后B,然后最终删除节点A.我试图在Node中使用removeChild()方法执行此操作 但到目前为止,我无法递归删除它们。 有什么建议可以递归删除它们吗? 我递归地尝试获取节点和节点长度。 但节点长度没有帮助 if(childNode.getChildNodes().getLength() == 0 ){ childNode.getParentNode().removeChild(childNode); } 问候 Dheeraj Joshi

如何在使用XJC生成JAXB代码期间重命名顶级Classname?

我试图从几个xsd生成一些bean。 不幸的是,它们都具有相同的根元素。 我已成功创建了一个用于重命名子元素的xjc绑定文件,但无法找到一种方法来选择根节点来更改它。 我尝试了以下但得到错误:[错误] XPath评估“/”需要导致一个元素。

使用XSLT转换XML并保留Unicode字符

我的XSLT转换已成功几个月,直到我遇到带有Unicode字符的XML文件(很可能是表情符号)。 我需要保留Unicode,但XSLT将其转换为HTML实体。 我认为将编码设置为UTF-8可以解决我的问题,但我仍然遇到问题。 任何帮助赞赏。 码: private byte[] transform(InputStream stream) throws Exception{ System.setProperty(“javax.xml.transform.TransformerFactory”, “org.apache.xalan.processor.TransformerFactoryImpl”); Transformer xmlTransformer; xmlTransformer = (TransformerImpl) TransformerFactory.newInstance().newTransformer(new StreamSource(createXsltStylesheet())); xmlTransformer.setOutputProperty(OutputKeys.ENCODING, “UTF-8″); XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(stream,”UTF-8”); Source staxSource = new StAXSource(reader, true); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); Writer writer = new OutputStreamWriter(outputStream, “UTF-8”); xmlTransformer.transform(staxSource, new StreamResult(writer)); return outputStream.toByteArray(); } 如果我加 xmlTransformer.setOutputProperty(OutputKeys.METHOD, “text”); 保留Unicode但不保留XML。